Bloco Ruby tendo matriz ou vários parâmetros
Hoje fiquei surpreso ao descobrir que o ruby encontra automaticamente os valores de uma matriz dados como um parâmetro de bloco.
Por exemplo:
foo = "foo"
bar = "bar"
p foo.chars.zip(bar.chars).map { |pair| pair }.first #=> ["f", "b"]
p foo.chars.zip(bar.chars).map { |a, b| "#{a},#{b}" }.first #=> "f,b"
p foo.chars.zip(bar.chars).map { |a, b,c| "#{a},#{b},#{c}" }.first #=> "f,b,"
Eu esperava que os dois últimos exemplos apresentassem algum tipo de erro.
Este é um exemplo de um conceito mais geral em ruby?Não acho que minhas palavras no início da minha pergunta estejam corretas. Como chamo o que está acontecendo aqui?