Existe-t-il un moyen de créer une méthode pouvant accepter un paramètre, mais pouvant également être appelée sans méthode, auquel cas le paramètre est considéré comme nil
comme ci-dessous?
some_func(variable)
some_func
def some_func(variable = nil)
...
end
Outre l'option plus évidente des paramètres avec des valeurs par défaut, que Sawa a déjà montré, l'utilisation de tableaux ou de hachages peut être pratique dans certains cas. Les deux solutions conservent nil en tant qu'argument.
1. Recevoir comme tableau:
def some_func(*args)
puts args.count
end
some_func("x", nil)
# 2
2. Envoyer et recevoir comme hash:
def some_func(**args)
puts args.count
end
some_func(a: "x", b: nil)
# 2
Vous pouvez également utiliser un hash comme argument et avoir plus de liberté:
def print_arg(args = {})
if args.has_key?(:age)
puts args[:age]
end
end
print_arg
# =>
print_arg(age: 35, weight: 90)
# => 35