什么是Smalltalk等同于Java的静态?
什么是Smalltalk等同于
Java的静态字段和方法? IOW,Smalltalkers在需要课堂级数据和/或方法时会做什么?
解决方法
我们使用类方法/实例变量.一个类是一个对象,毕竟可以有方法.
例如,Rectangle类有一个方法#origin:corner:所以你可以写 Rectangle origin: 0@0 corner: 100@100 创建一个Rectangle.这只是消息#origin:corner:发送到称为Rectangle的对象(一个类是一个对象!),两个Points作为参数. 类侧实例变量的工作方式大致相同.作为对象的类可以具有实例变量.从SUnit库: TestCase class instanceVariableNames: 'history' 然后TestCase类以通常的方式暴露了这个,使用getter / setter(#history和#history :). 编辑:我使用的@引起了很多讨论.这就是所谓的binary message,它允许一个人定义选择器,看起来只是其他语言将称为中缀运算符.例如,3 4,或0 @ 0.在@的情况下,Number类定义一个称为@的方法,取参数y,定义为^ Point x:self y:y – “返回其坐标为我自己的值,其y坐标是参数的Point”. Point是一个有序对,但当然没有什么可以阻止一个定义更高维的版本. Point可以定义一个叫做@的方法,例如:^ Triple x:self xy:self yz:z – “返回一个R ^ 3中的一个点,其中x,y坐标是我自己的,z坐标是给定参数“. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |