Ruby2.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で名前付きパラメーターを使用するには、それらのデフォルト値を設定する必要があるため、非常に面白いです。
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
これは、Rubyがデフォルトのパラメーター値で以前に持っていた動作と非常によく似ています。
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
私はそれがなぜ起こっているのか、そしてそれがほとんどどのように機能するのかを知っています。
しかし、私は興味があります。名前付きパラメーターを使用する場合、パラメーターにデフォルト値を使用する必要がありますか?
そして、誰かがこれら2つの違いは何ですか?
def test1(var1="default value123")
#.......
end
def test1(var1:"default value123")
#.......
end