Parámetros con nombre en Ruby 2

No entiendo completamente cómo funcionan los parámetros nombrados en 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)

Se trata como un hachís. Y es muy divertido porque usar parámetros nombrados en Ruby 2.0 Idebe establecer valores predeterminados para ellos:

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

que es muy similar al comportamiento que Ruby tenía antes con los valores de los parámetros predeterminados:

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

Sé por qué sucede eso y casi cómo funciona.

Pero tengo curiosidad,debe ¿Uso valores predeterminados para parámetros si uso parámetros nombrados?

Y, ¿alguien puede decirme cuál es la diferencia entre estos dos, entonces?

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

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

Respuestas a la pregunta(8)

Su respuesta a la pregunta