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

Duvida sobre aviso ao rodar programa

Criei um programinha bem simples para testar alguns conceitos, basicamente o usuario digita quantas faces ele quer em um dado e o programa randomiza um dos valores dessa face, mas eu criei um "if" simplesmente para nao ter que executar o programa diversas vezes. Porem quando digito outro valor para "faces" o terminal exibe um aviso "warning: already initialized constant Faces" "warning: previous definition of Faces was here" Imagino o que tenha causado o erro, a falta de um "reset" no codigo mas nao sei fazer isso, segue abaixo o codigo que usei

puts "Ola vamos rolar os dados" for dados in 1..100 puts "Quantas faces vc quer que o dado tenha?" Faces = gets.to_i valor_obtido = rand(Faces).to_s puts "\n\n" puts "Seu numero é > #{valor_obtido} <" end

2 respostas
solução!

Caro Pedro,

O código postado não contém if algum.

O que você fez está dentro de um contexto de licença poética, então podemos considerar um while(true) e você inicializar suas variáveis fora dele, e dentro dele limpar os valores, só lembre que o Ruby tem tipagem FORTE e dinâmica, ou seja, não diz o tipo na inicialização, mas depois que usar aquele objeto com um certo tipo ele não muda mais, somente com métodos de cast, tipo o to_i que você usou.

Olá Pedro, A variável "Faces" que você definiu na verdade não é uma variável e sim uma constante. Constantes são definidas com a primeira letra maiúscula como em "Faces". Isto explica o warning. Resumindo, troque "Faces" (constante) por "faces" (variável).