Smalltalk 在monticello包中安全地声明和初始化全局变量?

Smalltalk 在monticello包中安全地声明和初始化全局变量?,smalltalk,pharo,squeak,monticello,Smalltalk,Pharo,Squeak,Monticello,如何安全地声明和初始化Monticello包使用的全局变量,以便在加载过程中不会出错?正在做什么 Smalltalk at:#VarName put:varValue 在类端“初始化”一个包类的方法是否足够?(我不希望在这种情况下使用共享池。)是的,这就足够了。另一个选项是使用延迟初始化: ^ VarName ifNil: [ VarName := value ] 我很好奇,为什么要使用全局变量?根据我的经验,只有极少数情况下不使用全局变量就无法解决,我认为在大多数情况下,使用全局变量意味着设

如何安全地声明和初始化Monticello包使用的全局变量,以便在加载过程中不会出错?正在做什么

Smalltalk at:#VarName put:varValue


在类端“初始化”一个包类的方法是否足够?(我不希望在这种情况下使用共享池。)

是的,这就足够了。另一个选项是使用延迟初始化:

^ VarName ifNil: [ VarName := value ]

我很好奇,为什么要使用全局变量?根据我的经验,只有极少数情况下不使用全局变量就无法解决,我认为在大多数情况下,使用全局变量意味着设计不好。

延迟初始化将起作用,但变量仍将未声明。所以在任何情况下,为了得到一个合适的全局变量,你必须声明它。