您的位置:首页 > 其它

Smalltalk基础知识系列03:对象和消息之消息种类

2008-02-23 22:38 639 查看
(有时候翻译不是很准确,大家最好看例子,然后放到workspace中执行一次,再回过头来理解概念。)

Smalltalk用三种消息:一元消息、二元消息和关键字
Smalltalk接受三种类型的消息,一元消息、二元消息和关键字。它们的区别如下:
消息名称的结构
消息的个数

一元消息由单个字符串组成(更准确地说,叫做表示符);它们不含有任何的表达式运算符
使用Print it 一行一行的执行这三个例子。
3 negated “消息接收者是3,消息选择器是negated(加一个负号)”
27 squared “消息接收者是27,消息选择器是squared”
'black fox' dropFinalVowels “消息接收者是’black fox’,消息选择器是dropFinalVowels”

顺便说一下,对这些以及下面关于消息的例子深究太多,我们会立刻解释它们从哪里来以及你如何可以浏览它们。二元消息使用1至2个特殊字符,例如 + - / / @ & 和 | 等表达式运算符。消息选择器跟在运算符后面。例如:
3 + 5
“接受者是3,消息选择器是 +,参数是整形对象5。注意,所有的算术操作都是通过消息来执行”

'abc' , 'xyz'
“接受者是’abc’ 消息选择器是 , 参数是一个字符串对象’xyz’”

17 // 5
“接受者是17 消息选择器是// 参数是整形对象5”

关键字消息可以有任何数量的参数,并且每个参数前用一个关键字来标识。消息选择器有多个关键字组成(关键字后面跟一个冒号来标识),每个关键字后面跟一个参数。

3 between: 5 and: 10
“接受者是3 消息选择器是 between:and: 关键字是between: 和 and: 参数是5和10”

$d between: $a and:$r
“接受者是字符d 消息选择器是 between:and: 关键字是between: 和 and: 参数是字符a 和 r”

3 raisedTo: 17
“接受者是字符3 消息选择器是 raisedTo: 参数是17”

Dialog request: 'Your name, please' initialAnswer: 'John'
“接受者是类对象Dialog(一会详细说明) 消息选择器是 request:initialAnswer: ”

'aLongWord' chopTo: 5
“接受者是字符串 'aLongWord' 消息选择器是chopTo: ”

下面这个表达式的消息异常的长,它有6个关键。
它的选择器是 choose:fromList:values:lines:cancel:for:
我把它按照关键字写在多行,你可以把它们都写在一行,也可以用任何的形式来写,因为Smalltalk会忽略 空白。把所有行选择后执行它们。

Dialog
choose: 'Which line do you want?'
fromList: #('first' 'second' 'third' 'fourth')
values: #(1 2 3 4)
lines: 8
cancel: [#noChoice]
for: Dialog defaultParentWindow

注意,表示符以一个小写的字母开头,并且只能由字母和数字组成。它们不限制长度并且大小写敏感,所以例如,asUppercase 和 asUpperCase 是不同的两个表示符。为了验证这个问题,你可以在workspace中执行这两个语句。例如,’abc’ asUpperCase 被执行时,会弹出选择对话框,因为没有叫做asUpperCase的消息。
你可以单击 取消 来终止程序的执行并且修改代码,或者也可以直接纠正它。如何选择纠正它,VisualWorks 会提供一到多个拼写相似的选择器,如果你选择了其中一个,它将会改正原来代码的错误并继续执行程序。如果是小的拼写错误,通过纠正一般都没有问题,但大的错误就必须手工修改它了。
最后,上面所有列出的消息定义都可以在开发时直接使用,我也会简单讲一下如何去访问它们,修改它们以及如何定义自己的消息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: