局部变量由小写字母或下划线(_)开头.局部变量不像全局和实变量一样在初始化前含nil值.
ruby.html" target="_blank">ruby> $foo
nil
ruby> @foo
nil
ruby> foo
ERR: (eval):1: undefined local variable or method `foo' for main(Object)
对局部变量的第一次赋值做的很像一次声明.如果你指向一个未初始化的局部变量,Ruby解释器会认为那是一个方法的名字;正如上面所见错误
信息的.
一般的,局部变量的范围会是
proc{...}
loop{...}
def...end
class...end
module...end
整个程序(除非符合上面某个条件)
下面的例子,define?是一个检查标识符是否已定义的操作符.如果已定义它将返回标识符的描述,否则返回nil.正如你所见的,bar的范围是
loop的局部变量;当loop退出时,bar无定义.
ruby> foo = 44; print foo, "/n"; defined? foo
44
"local-variable"
ruby> loop{bar=45; print bar, "/n"; break}; defined? bar
45
nil
一个范围内的过程对象共享这个范围内的局部变量.这里,局部变量 bar 由 main 和过程对象 p1, p2共享:
ruby> bar=0
0
ruby> p1 = proc{|n| bar=n}
#
0x40172654>0x40172668>0x4017280c>0x40172820>0x40170fac>0x40170fc0>0x8dce8>0x8deb0>
新闻热点
疑难解答
图片精选