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 会提供一到多个拼写相似的选择器,如果你选择了其中一个,它将会改正原来代码的错误并继续执行程序。如果是小的拼写错误,通过纠正一般都没有问题,但大的错误就必须手工修改它了。
最后,上面所有列出的消息定义都可以在开发时直接使用,我也会简单讲一下如何去访问它们,修改它们以及如何定义自己的消息。
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 会提供一到多个拼写相似的选择器,如果你选择了其中一个,它将会改正原来代码的错误并继续执行程序。如果是小的拼写错误,通过纠正一般都没有问题,但大的错误就必须手工修改它了。
最后,上面所有列出的消息定义都可以在开发时直接使用,我也会简单讲一下如何去访问它们,修改它们以及如何定义自己的消息。
相关文章推荐
- Smalltalk基础知识系列02:对象和消息之一切皆对象
- Smalltalk基础知识系列04:对象和消息之组合消息
- Smalltalk基础知识系列05:对象和消息之优先级
- Smalltalk基础知识系列00:前言
- PHP基础知识系列:对象串行化serialize与unserialize
- Smalltalk基础知识系列01:环境搭建
- 【脚本语言系列】关于Python基础知识对象变动,你知道的事
- 翻转设计模式系列——第一部分--面向对象基础知识(1)--概览
- 【脚本语言系列】关于Python基础知识对象自省,你需要知道的事
- PHP基础知识系列:面向对象基础
- java基础知识系列---面向对象思想的理解
- C# 基础知识系列之面向对象基础
- C# 基础知识系列]专题七:事件和消息的机制理解
- JavaScript知识夯实系列-1.JavaScript基础知识
- Java基础知识系列之注解解析器
- 黑马程序员——面向对象基础知识
- JSP基础知识(JSP页面组成和内置对象)
- Java基础知识-对象初始化
- C#基础知识系列四(运算符汇总)
- 1900页Python系列PPT分享一:基础知识(106页)