1

宿題の質問

初期化中にクラスにパラメーターを渡すことは可能ですか (または推奨されますか)? または、その前に-インスタンス化中。

私は次のようなことができるようにしたい:

f:=Farm type: #chickens

そして、初期化中に、これに次の行に沿って何かをさせます...

myAnimalTracker := AnimalTracker new type

ところで、AnimalTrackerどの型のオブジェクトを作成するかは、型に基づいて決めたいと思います。この例でAnimalTrackerは、いくつかのサブクラス ( ChickensPigsCowsなど) があり、インスタンス化中に、作成されるオブジェクトのタイプを決定できるようにしたいと考えています。


物事の側でこれを決定する方が理にかなっているように見えFarmますが (つまり、タイプに基づいて、必要なクラスのタイプを直接インスタンス化するだけです)、残念ながら、指示がこのように表現されているようには見えません。

4

2 に答える 2

2

はい、できます。

通常、あなたは次のようなことをします

Farm new initializeWithType: #chicken

しかし、それを短くすることもできます

Farm ofType: #chicken

それは最終的に前のことを行います(初期化メソッドを持つことが不可欠です)。

たぶん、さらにいくつかのショートカット

Farm newWithChikens

しかし、あなたがとてもクールになるように、Smalltalk With Styleを読むことをお勧めします。

于 2013-06-14T03:30:45.937 に答える