簡體   English   中英

由多個參數組成對象的類方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM