Jim*_*Jim 10 java oop programming-languages smalltalk
Smalltalk相当于Java的静态字段和方法是什么?IOW,Smalltalkers在需要类级数据和/或方法时会做些什么?
Fra*_*rar 10
我们使用类方法/实例变量.毕竟,类是一个对象,所以可以有方法.
例如,Rectangle类有一个方法#origin:corner:所以你可以写
Rectangle origin: 0@0 corner: 100@100
Run Code Online (Sandbox Code Playgroud)
创建一个Rectangle.这只是消息#origin:corner:发送到名为Rectangle的对象(一个类是一个对象!),其中两个Point作为参数.
类侧实例变量的工作方式大致相同.作为对象的类可以具有实例变量.来自SUnit库:
TestCase class
instanceVariableNames: 'history'
Run Code Online (Sandbox Code Playgroud)
然后TestCase类以通常的方式使用getter/setter(#history和#history :)公开它.
编辑:@
我使用过引起了一些讨论.这就是所谓的二进制消息,它允许人们定义看起来只是其他语言称为中缀运算符的选择器.例如3 + 4
,或0@0
.在这种情况下@
,Number
类定义了一个名为@
take a parameter 的方法y
,定义为^Point x: self y: y
- "返回一个Point,其x坐标是我自己的值,其y坐标是参数".
Point是一个有序的对,但当然没有什么可以阻止定义更高维度的版本.Point
可能会定义一个@
看起来像这样的方法,例如:^Triple x: self x y: self y z: z
- "返回R ^ 3中的一个点,其x,y坐标是我自己的,其z坐标是给定的参数".
归档时间: |
|
查看次数: |
2148 次 |
最近记录: |