木兰重生:更多 $ 的妙用, self 的拓展语义
資深大佬 : xuanwu 1
木兰重生:更多 $ 的妙用,self 的拓展语义
节选:
2 self 不可代替
2.1 可用关键词命名变量
与 PHP 类似,带 $ 可以用关键词命名变量:
> $while = 4 > $while 4
而用 self 则不允许:
> self.while = 3 (..•˘_˘•..) File "<STDIN>", line 1:6, unexpected token "WHILE" self.while = 3 ^ > self.while (..•˘_˘•..) File "<STDIN>", line 1:6, unexpected token "WHILE" self.while
2.2 应变属性
应变属性( attr )相关语法对应 Python 中的 @property 和 setter 。这里起名“应变属性”是因为 attribute 和 property 的含义区别很微妙,暂时未找到合适中文与类型内一般属性变量作区分,于是用功能特点命名。下图左边为木兰,右边为 Python 同功能代码,重点在三个 attr 。这部分功能未发现可代替的 self 语法。

后感
作为未参与木兰原始设计的第三方,仅从复现出的功能很难完全领会设计意图。就个人感觉,木兰的 $ 相关语法设计简化了 Python 的 self 相关语法。对 self 的语义拓展虽然看似信手拈来但也有合理之处。是否对多线程有特别好处待研究。
请赐教。
大佬有話說 (2)