在Smalltalk中定义双大于号(>;)的方法
在Kent Beck的书中,双大号(在Smalltalk中定义双大于号(>;)的方法,smalltalk,gnu-smalltalk,Smalltalk,Gnu Smalltalk,在Kent Beck的书中,双大号(>)用于定义如下方法: Point class extend [ x: xNumber y: yNumber [ ^self new setX: xNumber y: yNumber ] ] Point extend [ setX: xNumber y: yNumber [ x := xNumber. y := yNumber. ^
>
)用于定义如下方法:
Point class extend [
x: xNumber y: yNumber [
^self new
setX: xNumber
y: yNumber ]
]
Point extend [
setX: xNumber y: yNumber [
x := xNumber.
y := yNumber.
^self ]
]
点类>>x:xNumber y:yNumber
^自我更新
setX:xNumber
y:yNumber
点>>设置x:xNumber y:yNumber
x:=xNumber。
y:=yNumber。
^自我
但是,我无法在GNU Smalltalk中运行它
它在Smalltalk的某些实现中是否有效?或者它只是一种伪代码?事实上,这是伪代码 在其他语言中,您可以使用
告诉人们该方法在这个类中,但在smalltalk中,您可以编写>
在闲聊中你会做什么
x: xNumber y: yNumber
^self new
setX: xNumber
y: yNumber
>> selector
"Answer the compiled method associated with the argument, selector (a
Symbol), a message selector in the receiver's method dictionary. If the
selector is not in the dictionary, create an error notification."
^self compiledMethodAt: selector
所以你可以做,例如(检查)
但是请注意,我们在这里发送#class,因为#x:y:是一个类端方法。如果要访问实例端方法,比如#normalized,则可以执行以下操作:
Point >> #normalized
GNU Smalltalk的正确语法如下所示:
Point class extend [
x: xNumber y: yNumber [
^self new
setX: xNumber
y: yNumber ]
]
Point extend [
setX: xNumber y: yNumber [
x := xNumber.
y := yNumber.
^self ]
]
有关GNU Smalltalk语法的更多信息,请参阅
Point >> #normalized
Point class extend [
x: xNumber y: yNumber [
^self new
setX: xNumber
y: yNumber ]
]
Point extend [
setX: xNumber y: yNumber [
x := xNumber.
y := yNumber.
^self ]
]