Home > Enterprise >  How can i use a global variable in ruby?
How can i use a global variable in ruby?

Time:01-18

How can i use a global variable in my function? this is my whole script, i dont want to use class, only i would like to use my variable h in my func1

h = {foo: 1, bar: 2, baz: 3}
total = h.values.sum

def func1 ()
    h.each do |key, value|
        puts "#{key}"
    end
    
    puts h.keys.count
end


func1()

i am getting this error:

`func1': undefined local variable or method `h' for main:Object (NameError)

what is the wrong?

CodePudding user response:

When you want to use your local variable (it is not a global variable) in your method then you have to pass it to your questions, for example, like this:

h = { foo: 1, bar: 2, baz: 3 }

def func1(hash)
  hash.each do |key, value|
    puts "#{key}"
  end
    
  puts hash.keys.count
end

func1(h)
#=> foo
    bar
    baz
    3

CodePudding user response:

As noted in @spickermann's answer, passing local variables to methods is the best way to do things, but if you actually want to create a global (use extreme discretion), you use a $ on the variable name.

$h = {foo: 1, bar: 2, baz: 3}

def func1
    $h.each do |key, value|
        puts "#{key}"
    end
    
    puts $h.keys.count
end

func1
  •  Tags:  
  • Related