Non capisco completamente come funzionano i parametri denominati in Ruby 2.0.Parametri nominati in Ruby 2
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)
è trattato come un hash. Ed è molto divertente perché per utilizzare parametri denominati in Ruby 2.0 I must impostati i valori di default per loro:
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
che molto simile al comportamento che Rubino aveva prima con parametri preimpostati:
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
So perché succede e quasi come funziona.
Ma sono solo curioso, deve Uso i valori predefiniti per i parametri se utilizzo i parametri denominati?
E qualcuno può dirmi qual è la differenza tra questi due?
def test1(var1="default value123")
#.......
end
def test1(var1:"default value123")
#.......
end
Il primo ha un parametro opzionale. L'ultimo ha chiamato parametri. Quindi puoi omettere il parametro per entrambi, ma se vuoi passare un parametro, l'ultimo deve essere nominato. –
possibile duplicato di [Nessun parametro con nome in Ruby?] (Http://stackoverflow.com/questions/9612499/no-named-parameters-in-ruby) –
il primo esempio non utilizza i parametri denominati – baash05