Ответ 1
def some_func(variable = nil)
...
end
Есть ли способ сделать метод, который может принимать параметр, но также может быть вызван без одного, и в этом случае параметр считается nil
следующим образом:
some_func(variable)
some_func
def some_func(variable = nil)
...
end
Помимо более очевидной опции параметров со значениями по умолчанию, которые Sawa уже показал, использование массивов или хешей может быть удобно в некоторых случаях. Оба решения сохраняют nil как аргумент.
1. Получать как массив:
def some_func(*args)
puts args.count
end
some_func("x", nil)
# 2
2. Отправить и получить как хэш:
def some_func(**args)
puts args.count
end
some_func(a: "x", b: nil)
# 2
Вы также можете использовать хэш в качестве аргумента и иметь больше свободы:
def print_arg(args = {})
if args.has_key?(:age)
puts args[:age]
end
end
print_arg
# =>
print_arg(age: 35, weight: 90)
# => 35