[Pharo-users] Streams for FileReference in Pharo 7

Sven Van Caekenberghe sven at stfx.eu
Mon Feb 18 10:52:39 EST 2019


OK, I that is what I expected. 
I will study this again and make a PR with better comments and tests.

> On 18 Feb 2019, at 16:32, ducasse <stepharo at netcourrier.com> wrote:
> 
>> 
>> 
>> I have been thinking a bit more about this, and I have a lot of problems with
>> 
>> Integer>>#putOn: aStream
>> 	aStream isBinary
>> 		ifTrue: [ self asByteArray do: [ :each | aStream nextPut: each ] ]
>> 		ifFalse: [ self asString putOn: aStream ]
>> 
>> I think we should simply remove this method. It is ugly and wrong.
> 
> I agree
> 
>> #<< should simply be a shortcut for either #nextPut: and #nextPutAll: and nothing more.
>> 
>> The following two are OK for me:
>> 
>> String streamContents: [ :out | out << 'Hello' << $! ].
>> ByteArray streamContents: [ :out | out << #[ 1 2 3 ] << 4 ].
>> 
>> But the following most definitively not:
>> 
>> (ByteArray streamContents: [ :out | out << 16rFF << 16rFF11 << 16rFFFF22 << 16rFFFFFF33 ]) hex.
>> 
>> When you write out an integer, you have to decide its size, that can never depend on the magnitude (because there is no way to read this back unless there is additional bracketing).
>> 
>> Also, printing to a stream should be (very) efficient. Making copies of objects just for conversion purposes should be avoided.
> 
> yes.
> 
>> 
>> I think that if we remove Integer>>#putOn: I could live with 
>> 
>> ZnEncodedStream>>#<< anObject
>> 	anObject putOn: self
> 
> Yes :)
> and remove the ugly one? Yes 
> 
>> 
>> The other solution is to define #<< as strictly the same as #nextPutAll: and remove all #putOn: implementors.
>> 
>> Sven




More information about the Pharo-users mailing list