[squeak-dev] (ReadWriteStream on: #(1)) next ... nil?
leves at caesar.elte.hu
Mon Jul 5 21:06:20 UTC 2021
On Mon, 5 Jul 2021, Marcel Taeumel wrote:
> Hi all!
> Does anybody know whether it would be dangerous to set the readLimit when initializing a ReadWriteStream? PositionableStream does this. WriteStream overrides this explicitely. ReadWriteStream is a WriteStream.
> (ReadWriteStream on: #(1)) next
> I am asking because our most famous R/W stream is RWBinaryOrTextStream. :-)
Changing #on: is dangerous because it might affect the behavior of
existing programs. Tracking down a "bug" like that could be rather hard.
You may want to use #on:from:to: to create your stream, which initializes
the instance the way you expect it:
(ReadWriteStream on: #(1) from: 1 to: 1) next "==> 1"
#on: behaves as #on: collection from: 1 to: 0.
P.S.: just noticed that ReadWriteStream has a fairly bad #hash method
which breaks when you send #contents to the stream. It would be nice to
check whether that #hash method is actually in use.
P.P.S.: Most subclasses of ReadStream and WriteStream are flawed in some
way. They should be subclesses of Stream and be able to operate on
another stream. ReadStream and WriteStream are misnomers. They are
streams operating on an internal collection, not generic read/write
streams you should subclass for your use case.
More information about the Squeak-dev