Die Antwort ist Ja und Nein
Sie können das gleiche Ergebnis erzielen, wie Sie in anderen Sprachen können eine Vielzahl von Mechanismen, einschließlich: -
- Standardwerte für Argumente
- Variable Argumentlisten (Der Splat-Operator)
- Definieren Sie Ihr Argument als Hash
Die tatsächliche Syntax der Sprache ermöglicht es Ihnen nicht, eine Methode zweimal zu definieren, auch wenn die Argumente unterschiedlich sind.
die drei Optionen über diese Betrachtet man könnte mit Ihrem Beispiel implementiert werden, wie
# 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
folgt Sie den zweiten Mechanismus häufig im Ruby-Code auftritt, vor allem in Rails, wie es das Beste aus beiden Welten bietet und ermöglicht etwas syntaktischer Zucker, um hübschen Code zu erzeugen, insbesondere den übergebenen Hash nicht in Klammern einschließen zu müssen.
Diese wikibooks link bietet einige weitere Lesung
Vielen Dank für die 'Person.new Hinweis auf (: first_name => "...",: last_name => "...") 'Methode. Aus irgendeinem Grund dachte ich nicht daran, das zu benutzen, aber das beantwortet meine Frage. – agentbanks217
Ruby 2.0 unterstützt benannte Parameter out-of-the-box: http://robots.thoughtbot.com/ruby-2-keyword-arguments –