MoonScript中类的四种字段声明方式有何区别?
MoonScript中SomeClass类四种字段声明的区别
以下是四种声明方式的核心差异:
a : {}:实例成员字段
每个SomeClass的实例都会拥有独立的a字段,初始值为新的空表。不同实例的a相互独立,修改其中一个实例的a不会影响其他实例。@b : {}:类静态成员字段
这是绑定在SomeClass类本身的属性,不属于任何实例。所有实例访问@b(或通过SomeClass.b)时,都会指向同一个空表。修改这个值会影响所有访问它的地方。c = {}:类定义作用域内的局部变量
仅在SomeClass的类定义代码块内部可见,实例和外部代码都无法访问。它是类定义过程中的私有临时变量,只有类定义时的代码(比如类内方法若捕获了它)能使用,类定义完成后外部无法触及。@d = {}:类静态成员字段(等价于@b : {})
和@b : {}效果完全一致,都是给SomeClass类本身添加静态属性d。只是写法不同:冒号语法是键值对式声明,等于号是直接赋值式声明,最终都会将空表绑定到类的d属性上。
内容的提问来源于stack exchange,提问作者Dess
相关产品推荐
相关产品推荐

