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

Antworten auf die Frage(8)

Ihre Antwort auf die Frage