Is there a way to make a method that can accept a parameter, but can also be called without one, in which case the parameter is regarded nil
like the following?
some_func(variable)
some_func
Is there a way to make a method that can accept a parameter, but can also be called without one, in which case the parameter is regarded nil
like the following?
some_func(variable)
some_func
def some_func(variable = nil)
...
end
def some_func(variable = (variable_was_not_passed = true; nil))
idiom is for. –
Sixteenth Besides the more obvious option of parameters with default values, that Sawa has already shown, using arrays or hashes might be handy in some cases. Both solutions preserve nil as a an argument.
1. Receive as array:
def some_func(*args)
puts args.count
end
some_func("x", nil)
# 2
2. Send and receive as hash:
def some_func(**args)
puts args.count
end
some_func(a: "x", b: nil)
# 2
*arg
and **arg
instead of just arg
? –
Noblenobleman *arg
collects the arguments as an array. Without the *
you would have to call some_func(["x", nil])
. **arg
collects all named arguments. Without the **
it would only accept either a single unnamed argument, or any number of named arguments. –
Pitching You can also use a hash as argument and have more freedom:
def print_arg(args = {})
if args.has_key?(:age)
puts args[:age]
end
end
print_arg
# =>
print_arg(age: 35, weight: 90)
# => 35
© 2022 - 2024 — McMap. All rights reserved.