Benannte Parameter in Ruby 2
Ich verstehe nicht ganz, wie benannte Parameter in Ruby 2.0 funktionieren.
def test(var1, var2, var3)
puts "#{var1} #{var2} #{var3}"
end
test(var3:"var3-new", var1: 1111, var2: 2222) #wrong number of arguments (1 for 3) (ArgumentError)
Es wird wie ein Haschisch behandelt. Und es ist sehr lustig, benannte Parameter in Ruby 2.0 I zu verwendenMuss Setze Standardwerte für sie:
def test(var1: "var1", var2: "var2", var3: "var3")
puts "#{var1} #{var2} #{var3}"
end
test(var3:"var3-new", var1: 1111, var2: 2222) # ok => 1111 2222 var3-new
Das ähnelt dem Verhalten, das Ruby zuvor mit den Werten der Standardparameter hatte:
def test(var1="var1", var2="var2", var3="var3")
puts "#{var1} #{var2} #{var3}"
end
test(var3:"var3-new", var1: 1111, var2: 2222) # ok but ... {:var3=>"var3-new", :var1=>1111, :var2=>2222} var2 var3
Ich weiß, warum das passiert und fast wie es funktioniert.
Aber ich bin nur neugierig,Muss Ich verwende Standardwerte für Parameter, wenn ich benannte Parameter verwende.
Und kann mir jemand sagen, was der Unterschied zwischen diesen beiden ist?
def test1(var1="default value123")
#.......
end
def test1(var1:"default value123")
#.......
end