Benannte Parameter in Ruby 2

Ich verstehe nicht ganz, wie benannte Parameter in Ruby 2.0 ist in Arbeit.

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)

behandelt wie ein hash. Und es ist sehr lustig, weil Sie benannte Parameter in Ruby 2.0 I muss festlegen von Standardwerten 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

die sehr ähnlich zu dem Verhalten, das Ruby hatte vor mit Standard-Parametern-Werte:

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

Weiß ich, warum passiert das und fast, wie es funktioniert.

Aber ich bin einfach nur neugierig, muss ich benutze Standardwerte für Parameter, falls ich benannte Parameter zu verwenden?

Und, kann mir jemand sagen, was der Unterschied zwischen diesen beiden dann?

def test1(var1="default value123")
  #.......
end

def test1(var1:"default value123")
  #.......
end

InformationsquelleAutor der Frage Alan Coromano | 2013-03-09

Schreibe einen Kommentar