这基本上是我想做的(我已经实现了 Stream 子类WordStream
):
| aStream |
aStream := WordStream on: 'Test My Word Stream Class!'.
self assert: (aStream next) = 'Test'.
self assert: (aStream next) = 'My'.
self assert: (aStream next) = 'Word'.
self assert: (aStream next) = 'Stream'.
self assert: (aStream next) = 'Class'.
self assert: aStream atEnd
我已将所有内容正确存储在我的流中,但我只能通过以下方式弄清楚如何获取下一个单词:
next
|tmpStream|
tmpStream := ReadStream on: myStream contents.
^tmpStream nextDelimited: Character space.
这仅适用于第一个单词(显然)-当我尝试使用我的实例变量myStream
时,它只是不断返回''。
即,我不能让它工作:
next
^myStream nextDelimited: Character space.
有人可以帮我一把吗?
编辑:
这就是我实施的方式on:
on: inString
|tmpStream|
myStream := ReadWriteStream on: String new.
tmpStream := ReadStream on: inString.
[ tmpStream atEnd ] whileFalse: [ myStream nextPutAll: (tmpStream nextDelimited: Character space); nextPut: $ ].