我需要知道ruby中变量的默认值。
Global Variables: nil
Instance Variables: ?
Class Variables: ?
Local Variables: ?
我看了here,但我能发现的是全局变量的值为nil。
答案 0 :(得分:2)
您在首次分配时分配了局部变量值:
local = 1
local1 + local # NameError: undefined local variable or method `local1' for main:Object
类变量相似,如果不进行初始化就使用它们,则会出现错误:
class A
@@a
end
# NameError: uninitialized class variable @@a in A
类实例变量和类变量默认为nil
class A
def self.a
@a
end
def a
@a
end
end
> A.a
#=> nil
> A.new.a
#=> nil
答案 1 :(得分:0)
测试自己很简单:
未定义的全局变量的计算结果为nil
并生成警告:
defined? $foo
#=> nil
$foo
#=> nil
# warning: global variable `$foo' not initialized
未定义的局部变量raise
和NameError
:
defined? foo
#=> nil
foo
# undefined local variable or method `foo' for main:Object (NameError)
已定义但未初始化的局部变量的求值为nil
:
defined? foo
#=> nil
if false then foo = 42 end
defined? foo
#=> 'local-variable'
foo
#=> nil
未定义的实例变量的值为nil
并生成警告:
defined? @foo
#=> nil
@foo
#=> nil
# warning: instance variable `@foo' not initialized
未定义的类变量raise
和NameError
:
defined? @@foo
#=> nil
@@foo
# uninitialized class variable @@foo (NameError)
未定义的常量raise
和NameError
:
defined? FOO
#=> nil
FOO
# uninitialized constant FOO (NameError)