1

これらのチュートリアルを実行しようとしています: http://live.exept.de/doc/online/english/overview/basicClasses/streams.html

しかし、一部のメソッドを機能させることができません (nextAlphaNumericWord など)。2.0/3.0 にこれまたはこのようなものはありますか?


私はこのビットがまともに働いています:

[ tmpStream atEnd ] whileFalse: [ myStream nextPutAll: (tmpStream nextDelimited: Character space); nextPut: $ ].

これは、次のようなケースを考慮していません: 'one _ _ _ two _ _ three _ four _ _ '(スペース)

私も試しました:

    |tmpStream|
myStream := ReadWriteStream on: String new.
tmpStream := ReadStream on: inString.

[ tmpStream atEnd ] whileFalse: [ tmpStream next == $
                                    ifFalse: [ myStream nextPutAll: 
                                        (tmpStream nextDelimited: $ ); 
                                        nextPut: $
                                    ].

しかし、これは各単語の最初の文字を切り落とすだけです。助言がありますか?

4

1 に答える 1

4

その古い Smalltalk/X バージョンが本当に必要ですか? 現在の Smalltalk/X バージョンは 6.2.x で、PeekableStream および ReadStream クラスに #nextAlphaNumericWord メソッドが含まれています。ただし、より優れた機能を利用できるように、最新の Smalltalk/X バージョンにアップグレードすることを強くお勧めします。

Pharo 2.0 または 3.0 に移植する場合、その方法を実装するための複数のオプションがありますが、チュートリアルに近い方法は次のとおりです。

|string stream word1 word2 num1 num2 num3|

string := 'one two 12345 567.678'.
stream := string readStream.

word1 := stream nextDelimited: Character space.
stream skipSeparators.
word2  := stream upToAnyOf: Character separators.
num1   := Number readFrom: stream.
...
于 2013-06-18T04:22:58.063 に答える