La respuesta es sí y no
se puede lograr el mismo resultado que se puede en otros idiomas usando una variedad de mecanismos, incluyendo: -
- valores por defecto de los argumentos
- lista de argumentos (el operador splat)
- la definición de su argumento como un hash
La sintaxis real del idioma no le permite definir un método dos veces, incluso si los argumentos son diferentes.
Teniendo en cuenta las tres opciones anteriores éstos podrían ser implementadas con el ejemplo de la siguiente manera
# 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
Usted se encontrará con el segundo mecanismo de frecuencia del código Ruby, en particular dentro de los carriles, ya que ofrece lo mejor de ambos mundos y permite un poco de azúcar sintáctico para producir código bonito, particularmente sin tener que encerrar el hash pasado entre paréntesis.
Este wikibooks link proporciona una lectura más
Gracias por señalar el 'Person.new (: first_name => "...",: last_name => "...") 'método. Por alguna razón, no se me pasó por la mente usar eso, pero eso responde mi pregunta. – agentbanks217
Ruby 2.0 admite los parámetros nombrados de fábrica: http://robots.thoughtbot.com/ruby-2-keyword-arguments –