1
我發現在Rascal控制檯中,導入包含全局變量定義的模塊後,這些全局變量無法訪問。只有全局函數名稱是可訪問的。例如,在以下代碼中,在控制檯中導入Foo
後,我可以撥打x()
獲取1
,但取消引用x
會給我一個未綁定的變量錯誤。爲什麼?導入模塊後無法訪問模塊中的全局變量
module Foo
int x = 1;
int x() = 1;
我發現在Rascal控制檯中,導入包含全局變量定義的模塊後,這些全局變量無法訪問。只有全局函數名稱是可訪問的。例如,在以下代碼中,在控制檯中導入Foo
後,我可以撥打x()
獲取1
,但取消引用x
會給我一個未綁定的變量錯誤。爲什麼?導入模塊後無法訪問模塊中的全局變量
module Foo
int x = 1;
int x() = 1;
全局爲默認private
的搗蛋鬼,以防止你不容易做這種齷齪:-)
module Foo
public int x = 1;
int x() = 1;
這是有點不一致,因爲該函數是public
默認情況下,但不是當你考慮我們最終將從語言中刪除全局變量:-)
完全刪除全局變量聽起來很合理。但是有可能定義全局常量將會很好。 – day
同意,globals常量是無害的和有用的 – jurgenv