Pharo中实现Futures时遇到的">>"符号含义咨询
理解Pharo/Smalltalk中的
>>符号 你在复现Futures实现时遇到的BlockClosure>>future里的>>,是Smalltalk(包括Pharo)里方法定义的核心语法,用来明确“为某个类/元类添加或定义一个方法”。
拆解你的代码示例
咱们把你贴的这段代码拆解开看:
BlockClosure>>future ^ SFuture new value: self fixTemps
每个部分的含义很清晰:
BlockClosure:这是你要扩展的目标类,也就是给所有匿名闭包(BlockClosure的实例)新增一个方法>>:作为类和方法名的分隔符,左边是要扩展的类,右边是方法的名称future:就是你要定义的方法名- 下方的代码:是
future方法的具体实现,返回一个新的SFuture实例,并把当前闭包(self)处理后传入
为什么部分语法参考没提到它?
有些通用Smalltalk语法汇总可能会简化表述,或者用“类-方法定义分隔符”这类描述代替,但在Pharo、Squeak这些主流Smalltalk方言里,>>是标准的方法定义语法——不管是在代码浏览器里定义方法,还是在脚本里动态扩展类,都会用到它。
举个更直观的小例子:如果想给String类加一个自定义的反转方法,写法就是:
String>>myCustomReverse ^ self reversed asUppercase
之后你就能直接调用'hello' myCustomReverse得到'OLLEH'了。
回到你的Futures场景
这段代码的作用,就是让所有闭包都能调用future方法,把自己包装成一个Future对象,以此实现异步执行的能力——这也是Smalltalk“开放类”特性的典型用法:不用修改原有类的源码,就能给它新增功能。
内容的提问来源于stack exchange,提问作者Gakuo
相关产品推荐
相关产品推荐

