构造函数我想实现的Pharo小类,所以我这样做:使得在菲罗或Smalltalk中
Object subclass: #Person
instanceVariableNames: 'name age'
classVariableNames: ''
category: 'Test'
,我想模拟一个构造函数,因此我做了类似下面的方法:
newName:aName newAge:aAge
"comment stating purpose of message"
name:=aName.
age:=aAge.
^self.
但是当我想从菲罗操场这样称呼它:
objPerson:=Person newName:'Carl' newAge: 10.
它是没有t被Pharo识别,我做错了什么?
好点。但是,我会使用'#name:age:'选择器而不是'#setName:age:'。其他语言需要在设置者和获取者之前加上'set'或'get',因为他们没有其他的方式来区分它们。在Smalltalk中,冒号是选择器的一部分,然后使用这些前缀变得多余。 –
@LeandroCaniglia正是它的前缀的原因 - 区分它与普通的setter(没有前缀)。你不打算再次调用这个方法。 –
我重视拥有实例端构造函数的想法,以及将它们与常规setter进一步区分的想法。但是,我更喜欢从方法的分类中传达差异,而不是将'set'附加到选择器上。 –