0

smalltalk で既に初期化されている変数のデータ型を特定する方法はありますか?

例えば:

|abc|
abc := #(1 2 3 4 5 6)  'This is the array declared'
(abc isKindOf: Array) ifTrue: [ 'Check the data type of abc against array datatype'
    ^'Success!'
]

リクエストの理由: 特定のデータ型によって呼び出される場合にのみ、メソッドを実装する必要があります。

4

3 に答える 3

2

Smalltalk にもよくあるイディオムがあります。false を返すメソッドisArrayを定義します。true を返すクラスでObject定義します。このように、任意のオブジェクトに送信できます。しかし、繰り返しますが、前述のように、このイディオムは次善の設計を浮き彫りにしています。isArrayArray#isArray

于 2013-09-22T21:46:13.157 に答える
1

メソッドをデータ型配列に追加するだけです。つまり、クラス Array に。

その後、配列のインスタンスのみがそれを呼び出すことができます。

于 2013-09-21T17:19:57.573 に答える