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?

questionAnswers(3)

yourAnswerToTheQuestion