这基本上是我想要做的(我已经实现了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: $ ].
答案 0 :(得分:1)
PositionableStream
已定义#nextDelimited:
,但使用#next
。你可以做的一件非常可怕的事情是复制PositionableStream >> #nextDelimited:
的实现,并用你自己的get-a-single-character方法替换self next
调用。