Именованные параметры в Ruby 2
Я неЯ не совсем понимаю, как работают именованные параметры в Ruby 2.0.
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)
Это'рассматривается как хэш И это'Это очень забавно, потому что использовать именованные параметры в Ruby 2.0 Iдолжен установить для них значения по умолчанию:
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
что очень похоже на поведение, которое Руби имел раньше с параметрами по умолчанию ценности:
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
Я знаю, почему это происходит и почти как это работает.
Но я'Мне просто любопытно,должен Я использую значения по умолчанию для параметров, если я использую именованные параметры?
И кто-нибудь может сказать мне, чтоРазница между этими двумя тогда?
def test1(var1="default value123")
#.......
end
def test1(var1:"default value123")
#.......
end