2013-11-21 192 views
1

我發現在Rascal控制檯中,導入包含全局變量定義的模塊後,這些全局變量無法訪問。只有全局函數名稱是可訪問的。例如,在以下代碼中,在控制檯中導入Foo後,我可以撥打x()獲取1,但取消引用x會給我一個未綁定的變量錯誤。爲什麼?導入模塊後無法訪問模塊中的全局變量

module Foo 

int x = 1; 

int x() = 1; 

回答

1

全局爲默認private的搗蛋鬼,以防止你不容易做這種齷齪:-)

module Foo 

public int x = 1; 

int x() = 1; 

這是有點不一致,因爲該函數是public默認情況下,但不是當你考慮我們最終將從語言中刪除全局變量:-)

+0

完全刪除全局變量聽起來很合理。但是有可能定義全局常量將會很好。 – day

+0

同意,globals常量是無害的和有用的 – jurgenv