Abaixo está um pequeno código que desenvolvi só para testar:
def editar_dados
puts "Qual o seu nome?"
pegar_nome = gets.chomp
pegar_nome
end
def imprimir_dados(nome)
puts nome + " teste concluído."
puts "\n" + "seu nome foi armazenado".upcase
end
nome=editar_dados
imprimir_dados
Ao executar o código ocorre o seguinte
C:\ruby21\programas>ruby dado_privado1.rb
Qual o seu nome?
paulo
dado_privado1.rb:8:in `imprimir_dados': wrong number of arguments (0 for 1) (ArgumentError)
from dado_privado1.rb:14:in `<main>'
C:\ruby21\programas>
Como deveria se comportar:
C:\ruby21\programas>ruby dado_publico.rb
Qual o seu nome?
paulo
PAULO teste concluído.
SEU NOME FOI ARMAZENADO
C:\ruby21\programas>
Quase ia me esquecendo, quando tiro o '(nome)' da linha de comando:
def imprimir_dados(nome)
ou seja:
def imprimir_dados
O resultado é:
C:\ruby21\programas>ruby dado_privado1.rb
Qual o seu nome?
paulo
dado_privado1.rb:9:in `imprimir_dados': undefined local variable or method `nome' for main:Object (NameError)
from dado_privado1.rb:14:in `<main>'
C:\ruby21\programas>
Não consigo entender, se em um código simples como esse não consigo solução, como será em algo mais complexo?