在 Pharo 中,我想创建一个类方法,它创建一个新的人对象并在一个方法(两个参数)中设置姓名和年龄
Object subclass: #Person
instanceVariableNames: 'name age'
classVariableNames: ''
category: '...'
但是我无法访问类方法中的实例变量。
name: n : age: a
"Class method that creates a Person Object and defines its name and age"
| person1 |
person1 := self new.
person1 name := n. "Unable to compile past this point due to red syntax highlighting
person1 age := a.
^person1.
我的目标是能够调用:
aPerson := Person name: 'Pharo' age: '4'
最佳答案
您不能通过类 方法设置实例 变量。
要解决您的问题,您可以为您的实例变量创建访问器方法(在实例端......)并从您的类端构造函数方法中调用它们:
name: n age: a
"Class method that creates a Person Object and defines its name and age"
| person1 |
person1 := self new.
person1 name: n.
person1 age: a.
^ person1
但为此目的,通常编写一个实例方法来设置所有变量,并在其名称前加上set,然后是变量名称:
setName: aString age: aNumber
personName := aString.
age := aNumber.
^ self
现在你的构造函数 class 方法看起来像这样:
name: aString age: aNumber
^ self new setName: aString age: aNumber
关于smalltalk - 从多个参数创建对象的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27308808/