La réponse est Oui et Non.
Vous pouvez obtenir le même résultat que vous pouvez dans d'autres langues en utilisant une variété de mécanismes, y compris :-
- Les valeurs par défaut pour les arguments
- Listes d'arguments Variable (Le dossier de l'opérateur)
- La définition de votre argument comme une table de hachage
Le réel de la syntaxe de la langue ne permet pas de définir une méthode de deux fois, même si les arguments sont différents.
En considérant les trois options ci-dessus ceux-ci pourraient être mis en œuvre avec votre exemple comme suit
# As written by @Justice
class Person
def initialize(name, lastName = nil)
name = name + " " + lastName unless lastName.nil?
@name = name
end
end
class Person
def initialize(args)
name = args["name"] + " " + args["lastName"] unless args["lastName"].nil?
@name = name
end
end
class Person
def initialize(*args)
#Process args (An array)
end
end
Vous rencontrerez le second mécanisme est fréquemment à l'intérieur du code Ruby, en particulier dans les Rails de car il offre le meilleur des deux mondes et permet pour certains de sucre syntaxique pour produire assez de code, en particulier de ne pas avoir à placer le passé de hachage à l'intérieur des accolades.
Cette wikibooks lien fournit encore plus de lecture