它真的是关于消息在smalltalk传递

ngt*_*gty 14 smalltalk

我是smalltalk的新手,我对这个语言中只有6个关键字(self,super,true,false,nil和thisContext)这一事实印象深刻,并且几乎所有内容都像消息传递一样多么纯粹,例如.使用whileTrue循环,if/else使用ifTrue等等...这与我在其他语言中习惯的方式不同.

然而,在某些情况下,我无法理解消息传递的真正适用方式,其中包括:

  • 赋值运算符 :=
  • 级联运营商 ;
  • 期间运营商 .
  • 创建集合的方法 #( ... )

这些不是消息传递,对吗?

Nic*_*ley 13

正如您所发现的,仍然存在一些实际的Smalltalk语法.块构造,文字字符串/符号/注释,局部变量声明(|...|)和返回(^)是你没有提到的一些事情,也是语法.

一些扩展(例如#(...),通常创建一个Array,而不是一组)当然可以表达,例如#(1 2 3)等同于Array with: 1 with: 2 with: 3; 他们只是为了让代码更容易阅读和编写.

  • 注意,返回`^`和赋值`:=`也可以使用消息发送表达:`thisContext return:anObject`和`anObject instVarNamed:'foo'put:anObject`(例如变量,temporaries和globals类似) . (6认同)
  • 我们几乎可以说`^`和`:=`是语法糖;) (2认同)