在Pharo中我想创建一个类方法,它创建一个新的person对象,并在一个方法中设置一个名称和年龄(两个参数)
Object subclass: #Person
instanceVariableNames: 'name age'
classVariableNames: ''
category: '...'
Run Code Online (Sandbox Code Playgroud)
但是我无法访问类方法中的实例变量.
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.
Run Code Online (Sandbox Code Playgroud)
我的目标是能够致电:
aPerson := Person name: 'Pharo' age: '4'
Run Code Online (Sandbox Code Playgroud)
您无法从类方法设置实例变量.
要解决您的问题,您可以为实例变量(在实例端...)创建访问器方法,并从类侧构造函数方法中调用它们:
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
Run Code Online (Sandbox Code Playgroud)
但为此目的,通常编写单个实例方法来设置所有变量,并在其前面添加set,后跟变量名称:
setName: aString age: aNumber
personName := aString.
age := aNumber.
^ self
Run Code Online (Sandbox Code Playgroud)
现在你的构造函数类方法看起来像这样:
name: aString age: aNumber
^ self new setName: aString age: aNumber
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1539 次 |
最近记录: |