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

3. Lendo, escrevendo em arquivos e entendendo a pilha de execução

No arquivo de logica invoco o metodo avisa_campeao_atual(le_rank) que por parametro invoca le rank da Ui, por sua vez le_rank vai retornar dados

avisa_campeao_atual(le_rank)

Duvida: conteudo_atual está lendo o arquivo, e aplicado o metodo split, que recebe como parametro \n, ou seria, o split quebra onde achar \n ?

def le_rank()
      conteudo_atual = File.read "rank.txt"
      dados = conteudo_atual.split("\n")
end

\n

Entao na propria UI podemos passar como parametro para quem invocou le_rank, e posterior retornar-lo para o usuário?

Isto seria algo similar a pilha de execução ?

def avisa_campeao_atual(dados)
      puts "Nosso campeao atual é #{dados[0]} com pontos #{dados[1]}"
end
4 respostas

Eduardo,

Sim, o split vai quebrar a sua linha onde achar um "\n", gerando um array com todas as quebras.

Não entendi a sua segunda dúvida: "Entao na propria UI podemos passar como parametro para quem invocou le_rank, e posterior retornar-lo para o usuário".

Abraço!

Joviane,

um def da return dados e o outro recebe isto...

avisa_campeao_atual(le_rank)

avisa campeao tem como parametro le rank, por sua vez le rank retorna dados, e avisa campeao recebe agora esse retorno de le rank, ou seja dados...

def le_rank()
      conteudo_atual = File.read "rank.txt"
      dados = conteudo_atual.split("\n")
end


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

Isso seria uma recursão, um chamando ao outro ?

solução!

Oi Eduardo,

Recursão ocorre quando um método chama a ele próprio, por exemplo, se o método le_rank chamasse o próprio le_rank.

Neste caso estamos passando só o valor do retorno mesmo. Poderíamos ter escrito o código da seguinte forma:

dados = le_rank
avisa_campeao_atual(dados)

Abraço!

Entendo :)