6/06/2005

smalltalk学习笔记

Smalltalk是一门完全基于对象和消息的语言,在smalltalk中,一切都是对象。

Literal对象:这些对象的名字就决定了对象本身,比如数字,字符串。

Number对象:数字对象,比如7, 16rFF, 3.1415等等;

Char对象:字符对象,如$A,$7,$$等等;

String对象:字符串对象,如'This is a string','a string with an ''embedded string';

Array对象:如#(this is an array),#(12 'abc' (embedded array));

Symbol对象:如#aSymbol;

Identifiers标志符:分为三类,实例变量、类名、伪变量,类名首字母一定大写。

实例变量名必须声明才能使用,可以用<-来赋值;

伪变量无需声明,比如self、super、selfProcess、true、false、nil、smalltalk;

Messages消息:在smalltalk里,所有的操作都是通过给对象发送消息实现的。任何消息分为三个部分:一个receiver,一个消息selector,0个或者几个arguments。Message分为三类:unary消息,binary消息和keyword消息。

unary消息:没有argument,如7 sign,7 factorial;

binary消息:有一个argument,如7 + 4。从左到右的优先级,7 + 4 * 3返回33而不是19。但是unary消息比binary消息有更高的优先级;

keyword消息:keyword消息的selector包含一个或者多个keyword,每个keyword后边跟':',然后有一个argument。如7 max: 14,7 between:2 and: 24。keyword消息优先级更低;

Blocks:.意味着语句的结束,可以用[]将几个语句组合起来形成一个block,如[i<-i+1. i print]。Block可以被看作一个in-line的过程,所以它也可以有参数:[ :x :y | (x+y) print ]。

注释和续行:"This is a comment",\用于续行。

No comments: