如何在函数内部访问全局变量

时间:2019-05-31 14:23:31

标签: function crystal-lang

我有以下简单代码:

line = "Hello"

def myfn()
    puts line
end

myfn()

在函数中无法访问变量line。如何在函数内部访问全局变量?

3 个答案:

答案 0 :(得分:3)

您可以create a module with a class variable if you need a 'global' state

module Foo
  extend self

  @@line = "Hello"

  def myfn
    puts @@line
  end
end

Foo.myfn

答案 1 :(得分:1)

还有一个替代解决方案:

line = "Hello"

myfn = ->() {
  puts line
}

myfn.call

答案 2 :(得分:0)

您可以通过大写将其设置为常量。

LINE = "Hello"

def myfn()
    puts LINE
end

myfn()

如果您希望它是变量,则将其作为参数传递,这就是它们的作用。

line = "Hello"

def myfn(msg)
    puts msg
end

myfn(line)