?局部變量由小寫字母或下劃線(_)開頭.局部變量不像全局和實變量一樣在初始化前含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>
新聞熱點
疑難解答
圖片精選