No vídeo 10 da aula 1 o professor cria uma nova função com os parâmetros "mapa" e "nova_posicao".
Ao refatorar a função, ele muda o nome do parâmetro "nova_posicao" para simplesmente "posicao" sem alterá-lo no momento em que a função é chamada, ou seja, no código ficou assim:
nova_posicao = calcula_nova_posicao(heroi, direcao)
if !posicao_valida?(mapa, nova_posicao)
Mas na definição da função ficou assim:
def posicao_valida?(mapa, posicao)
linhas = mapa.size
colunas = mapa[0].size
estourou_linhas = posicao[0] < 0 || posicao[0] >= linhas
estourou_colunas = posicao[1] < 0 || posicao[1] >= colunas
if estourou_linhas || estourou_colunas
return false
end
if mapa[posicao[0]][posicao[1]] == "X"
return false
end
true
end
Ao rodar o programa, vemos que ele funciona normalmente, então a minha pergunta (composta de várias dúvidas) é:
Os parâmetros não deveriam ter o mesmo nome tanto na definição da função quanto ao invocá-la?
Se sim, porque o programa roda sem erros?
Se não, como são armazenados esses dados? É pela posição em que o parâmetro foi passado?