什么是在没有decorator @或@@的类定义中定义的变量?

Jok*_*ter 3 ruby class local-variables

在Ruby中,这样的代码是合法的:

class Aclass
  m = 1
end
Run Code Online (Sandbox Code Playgroud)

但从语义上讲,将会m是什么,以及如何访问它?

leo*_*ges 8

m只是一个局部变量.它只能在类定义中访问.例如,它可以用于引导类,但不能从其他任何地方访问它.

例如:

class Aclass

  m=1
  puts "m is #{m}"

end
Run Code Online (Sandbox Code Playgroud)

当您需要包含该类的文件时,该代码只运行一次.这有点类似于Java的静态初始化块.

  • @jokester所有对象的行为都是这样的.如果不调用`GC.start`(运行垃圾收集器),程序结束时将破坏所有对象. (2认同)