我一直在努力嘗試,以便更好地瞭解Ruby和這裏內的全球性就是我遇到的麻煩事:設置一個進程
$SAFE = 1
puts $SAFE # 1
proc {
$SAFE = 2
puts $SAFE # 2
}.call
puts $SAFE # 1
上面的代碼部分由再培訓局的源代碼重寫,以更好地突出拍攝這個例子。基本上在proc中,可以將$SAFE
的值設置爲任何想要的值,在proc之後,SAFE
的值返回到proc之前的值。
如果不是使用I它改變到不同的字的字$SAFE
,如$DOOR
:
$DOOR = 1
puts $DOOR
proc {
$DOOR = 2
puts $DOOR
}.call
puts $DOOR
然後$DOOR
的PROC後的值是2,而不是1。爲什麼這兩者之間的差例子?
好吧,那正是我想知道的。我正在尋找並希望保持一致,但在這裏我發現我們正在處理一個神奇的獨角獸thingamajiggy。 :-) – Francois