[英]Class method that makes an object from multiple arguments
在Pharo中我想創建一個類方法,它創建一個新的person對象,並在一個方法中設置一個名稱和年齡(兩個參數)
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
現在你的構造函數類方法看起來像這樣:
name: aString age: aNumber
^ self new setName: aString age: aNumber
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.