Ruby 方法 通过 def...end 定义。Ruby 具有灵活、富有表达力的参数处理能力——默认值、关键字参数、splat (*) 用于可变参数、块(block)——此外遵循 最后一个表达式是隐式返回值 的约定。
基本方法和隐式返回
ruby
()
a + b
add(, )
()
Ruby 方法 自动返回最后一个计算的表达式 ——你很少需要写 return(仅用于提前返回)。这是惯用法。
# default arguments
def greet(name, greeting = "Hello")
"#{greeting}, #{name}"
end
greet("Ann") # "Hello, Ann"
greet("Ann", "Hi") # "Hi, Ann"
# KEYWORD arguments (clearer, order-independent) — common in modern Ruby
def create_user(name:, age: 0, role: :user)
# name is required (no default); age/role optional
end
create_user(name: "Ann", role: :admin) # pass by keyword — readable
关键字参数 (name:) 是现代 Ruby 的惯用法——它们使调用具有自我说明性和顺序无关。
def sum(*numbers) # * collects extra positional args into an array
numbers.sum
end
sum(1, 2, 3, 4) # 10
def config(**options) # ** collects keyword args into a hash
options[:timeout]
end
config(timeout: 30, retries: 3)
*args 将可变位置参数收集到数组中;**options 将关键字参数收集到哈希中。
def valid?(x) # ? convention → returns a boolean (predicate method)
x > 0
end
def process!(data) # ! convention → modifies in place / is "dangerous"
data.map!(&:upcase)
end
命名约定:以 ? 结尾的方法返回布尔值(断言),! 表示破坏性/就地或