mercredi 20 avril 2022

Returning to functions but having to access arrays created only on main, how to?

I'm making a very simple code here to practice with Ruby and going to implement a simple "client, product, sell" interface

def menuinicial
    print "1 - Cliente
2 - Produto
3 - Venda
0 - Sair do programa
insira o código de manipulação desejado: ";
end 

here is the initial menu

def manipclientes
    while true
    puts "\n1 - Adicionar cliente"
      puts "2 - Visualizar clientes cadastrados"
      puts "3 - Editar cliente"
      puts "4 - Remover cliente"
      puts "0 - Retornar ao menu anterior"
      print "\nInsira a opção desejada: "
      escolha = gets.chomp
      return if escolha == "0"
      
      if escolha == "1" # "Adicionar cliente"
        print "\ninsira o nome do cliente: "
        nome = gets.chomp
        print "\ninsira o endereço do cliente: "
        rua = gets.chomp
        print "\ninsira o RG do cliente: "
        rg = gets.chomp
        print "\ninsira a data de nascimento do cliente( Ano, mês, dia): "
        ano = gets.chomp
        mes = gets.chomp
        dia = gets.chomp
        data = Time.new(ano.to_i, mes.to_i, dia.to_i)
        a = Cliente.new(nome, rua, rg, data)
        clientes.push(a)        #adicionando a ao array
      end

here is part of the code that is having issue, just right when I try to use the "Client.new" returns me the error

"in manipclientes': undefined local variable or method `clientes' for main:Object (NameError)"

and below there's the main code partially ready to go

# main
while true
menuinicial
init = gets.chomp
  break if init == "0"
  manipclientes if init == "1"
  manipprodutos if init == "2"
end

I can get the code working when I don't place it in "functions" but then I can't return to the initial menu (I've made a post right here)

Aucun commentaire:

Enregistrer un commentaire