0

こんにちは、私は学んでおり、smalltalk は初めてで、SortedCollection を画面に出力して keysAndValueDo を使用しようとしていますが、どのように行われたかわかりません。

4

2 に答える 2

4

次の例は Pharo Smalltalk で動作しますが、他の Smalltalk 実装も同様に動作する可能性があります。

  1. まず、例として既存の印刷方法を見てみましょう。の場合、そのスーパークラスのプロトコルでSortedCollectionそれらを見つけます。printingCollection

  2. 要素の印刷は で定義されていることがわかりますprintElementsOn:。したがって、このメソッドを で上書きできますSortedCollection

あなたが求めていたように、これは を使用するprintElementsOn:方法です:keysAndValuesDo:

printElementsOn: aStream
    aStream nextPut: $(.
    self keysAndValuesDo: [:key :value | 
        aStream
            nextPut: $(;
            print: key;
            nextPut: $:;
            space;
            print: value;
            nextPut: $)].
    aStream nextPut: $)

以前に印刷されたコレクション:

"SortedCollection(1 2 3 3 5 10)"

印刷されます:

「a SortedCollection((1:1)(2:2)(3:3)(4:3)(5:5)(6:10))」

于 2015-11-15T10:39:58.077 に答える