1
resposta

puts mapa

A função abaixo faz o terminal imprimir o mapa da mesma forma que está escrito no arquivo.

def desenha_mapa(mapa)
  puts "\n"
  puts mapa
end

Se modificar esta mesma função para:

def desenha_mapa(mapa)
  puts "\n"
  puts "#{mapa}"
end

O terminal imprime o vetor propriamente dito.

Minhas perguntas são:

1 - Por que puts mapa e puts #{mapa} imprimem de maneira diferente no terminal?

2 - Se mapa, por natureza, já é um array separado por quebras de linha (método split), como o terminal imprime da mesma maneira que está no arquivo mapa1.txt?

Desde já, agradeço o esclarecimento.

1 resposta

Oi Pedro, tudo bem? Pelo que entendi, é a forma como o puts imprime a interpolação do objeto dentro da string.

1 - Quando você imprime diretamente a variável, ele usa o método to_s do objeto, que a implementação é: imprimir os valores do vetor. Quando você interpola, aparementemente, o método usado é o inspect do objeto, por isso aparece os colchetes que representam o vetor.

2 - Justo por que a quebra de linha é um caracter universal, assim como a volta para o começo da linha, representado por \n\r, que não é impresso no terminal, mas é interpretado.