Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Avisa Campeão Atual

No exercício ao definir a função le rank ele faz ela retornar

dados = conteudo_atual.split("\n")

e quando chama a função avisa_campeao_atual que é


def avisa_campeao_atual(dados)
    puts "Nosso campeão atual é #{dados[0]} com #{dados[1]} pontos."
end

ele fornece dados para ela, ai tudo bem eu entendi, mas no vídeo ao definir a função le rank ele define assim

def le_rank 
    conteudo = File.read "rank.txt"
    conteudo.split "\n"
end

está escrito conteúdo apenas, só que ao invocar a função ele faz do mesmo jeito, fornecendo dados e depois usa

puts "O maior desafiante atual é #{dados[0]} com #{dados[1]} pontos"

Minha dúvida é se ele não escreveu dados antes como o programa sabe o que é dados[0] e dados[1]?

2 respostas
solução!

Oi Gustavo, tudo bem? Essencialmente o programa não sabe, o que ele sabe é que espera receber um valor e esse valor deve ser atribuido para a variavel dados. Vejamos:

def le_rank
    conteudo = File.read "rank.txt"
    conteudo.split "\n"
end

Este trecho lê o arquivo e retorna um array com os dados, certo?

def imprime
    dados = le_rank
    puts "#{dados[0]} e #{dados[1]}"
end

Acontece ai, uma atribuição do valor retornado para outra variavel. Outro exemplo, imagine o seguinte:

def imprime(dados)
    puts "#{dados[0]} e #{dados[1]}"
end

imprime le_rank

daria no mesmo resultado. Este segundo exemplo recebe os dados de le_rank e atribui a variavel dados, imprimindo os valores. Pegou a ideia?

As variaveis não precisam ter os mesmos nomes em lugares diferentes, os metodos fazem os repasses de valores.

Espero ter ajudado, bons estudos.

Ah Obrigado, não sabia disso