Methods
Ruby is a dynamic, beginner-friendly programming language, and methods let you package logic into named, reusable units you can call again and again.
Learn Methods in our free Ruby course — a beginner-friendly interactive lesson with worked examples, a practice exercise and a quick reference.
Part of the free Ruby course at LearnCodingFast — hands-on lessons with examples you run in your browser, plus practice exercises and a quick quiz.
By the end of this lesson you'll define methods, pass parameters with defaults and keywords, and understand Ruby's implicit return.
What You'll Learn in This Lesson
1️⃣ Defining and Calling Methods
You define a method with def , a name, optional parameters in parentheses, and a closing end . The big Ruby idea: the method returns its last evaluated expression automatically — no return needed. Parameters can have default values so callers may omit them.
2️⃣ Explicit Return, Keyword Args, and Naming
Reach for return only to exit early — like a guard for negative input. Keyword arguments (with a trailing colon) make calls read like labelled forms and free you from remembering argument order. And the trailing ? convention marks methods that answer true/false.
Your turn. Two area methods are written for you — you just need to call them with real numbers. Replace the TODO arguments, then run it.
Write a greet method that uses a keyword argument formal: to switch between two messages. Run with ruby hello.rb .
📋 Quick Reference — Methods
Practice quiz
Which keywords open and close a method definition?
- function ... end
- def ... }
- def ... end
- method ... end
Answer: def ... end. A method is written def name ... end.
What value does a Ruby method return by default?
- the last evaluated expression
- nil
- the first argument
- true
Answer: the last evaluated expression. Ruby implicitly returns the last expression evaluated.
When do you need an explicit return?
- always
- to return a string
- never; it is illegal
- only to exit a method early
Answer: only to exit a method early. Use return mainly for early exits, like a guard clause.
What is the result of def add(a, b); a + b; end then add(2, 3)?
- nil
- 5
- 23
- an error
Answer: 5. The last expression a + b is returned automatically, giving 5.
How do you give a parameter a default value?
- def f(x = 1)
- def f(x: 1)
- def f(x => 1)
- def f(x ?= 1)
Answer: def f(x = 1). A positional default uses = like def f(x = 1).
How are keyword arguments written and passed?
- with an asterisk
- in square brackets
- with a trailing colon, like name:
- with a leading @
Answer: with a trailing colon, like name:. Keyword arguments use a trailing colon and are passed by name.
By convention, a method name ending in ? signals that it:
- mutates the object
- returns a boolean
- is private
- takes no arguments
Answer: returns a boolean. A trailing ? marks a predicate returning true or false.
By convention, a trailing ! on a method name signals it:
- returns nil
- is faster
- is deprecated
- is a dangerous or mutating version
Answer: is a dangerous or mutating version. A trailing ! warns of a mutating or more aggressive variant, like sort!.
Why might a method return nil unexpectedly?
- it has too many arguments
- its last line is a puts, which returns nil
- it uses keyword arguments
- it has a default value
Answer: its last line is a puts, which returns nil. puts and print return nil, so ending on them returns nil.
What does def sum(*nums) collect into nums?
- a single value
- a hash of keywords
- all the arguments as an array
- a block
Answer: all the arguments as an array. The splat *nums gathers all positional arguments into an array.