I started working through PBE8, and in section 3.13 there is a method:
But it returns two warnings: [printString] No printString inside printOn Use cascaded nextPutAll:’s instead of #, in #nextPutAll: It has the option to automatically resolve the cascaded nextPutAll: which results in:
But it still has the warning about printString. |
You should be able to replace
nextPutAll: count printString with print: count On December 24, 2020 9:32:38 AM PST, g_patrickb--- via Pharo-users <[hidden email]> wrote:
|
In reply to this post by Pharo Smalltalk Users mailing list
Hi
this warning is just that printOn: is working on a stream and when we do printOn: aStream aStream nextPutAll: x printString printString creates yeat another stream then ask the contents and passes it to the first one printOn: aStream x printOn: aStream is faster and cleaner in that case.
-------------------------------------------- Stéphane Ducasse 03 59 35 87 52 Assistant: Aurore Dalle FAX 03 59 57 78 50 TEL 03 59 35 86 16 S. Ducasse - Inria 40, avenue Halley, Parc Scientifique de la Haute Borne, Bât.A, Park Plaza Villeneuve d'Ascq 59650 France |
Maybe his question is (also) why the automatic refactoring did it wrong, the rules warned about the wrong use of #printString, suggested a fix, but the solution is still using #printString, hence the same problem.
> On 25 Dec 2020, at 16:20, Stéphane Ducasse <[hidden email]> wrote: > > Hi > > this warning is just that printOn: is working on a stream > > and when we do > > printOn: aStream > > aStream nextPutAll: x printString > > printString creates yeat another stream then ask the contents and passes it to the first one > > > printOn: aStream > > x printOn: aStream > > is faster and cleaner in that case. > > >> On 24 Dec 2020, at 18:32, g_patrickb--- via Pharo-users <[hidden email]> wrote: >> >> I started working through PBE8, and in section 3.13 there is a method: >> >> Counter >> printOn: aStream >> >> super printOn: aStream. >> >> aStream nextPutAll: ' with value: ', count printString. >> >> But it returns two warnings: >> >> [printString] No printString inside printOn >> >> Use cascaded nextPutAll:’s instead of #, in #nextPutAll: >> >> >> >> It has the option to automatically resolve the cascaded nextPutAll: which results in: >> >> printOn: aStream >> >> super printOn: aStream. >> >> aStream >> >> nextPutAll: ' with value: '; >> >> nextPutAll: count printString >> >> >> >> But it still has the warning about printString. >> > > -------------------------------------------- > Stéphane Ducasse > http://stephane.ducasse.free.fr / http://www.pharo.org > 03 59 35 87 52 > Assistant: Aurore Dalle > FAX 03 59 57 78 50 > TEL 03 59 35 86 16 > S. Ducasse - Inria > 40, avenue Halley, > Parc Scientifique de la Haute Borne, Bât.A, Park Plaza > Villeneuve d'Ascq 59650 > France > |
Ah indeed.
So we will have to have a look. S
-------------------------------------------- Stéphane Ducasse 03 59 35 87 52 Assistant: Aurore Dalle FAX 03 59 57 78 50 TEL 03 59 35 86 16 S. Ducasse - Inria 40, avenue Halley, Parc Scientifique de la Haute Borne, Bât.A, Park Plaza Villeneuve d'Ascq 59650 France |
I opened a ticket.
https://github.com/pharo-project/pharo/issues/8178
-------------------------------------------- Stéphane Ducasse http://stephane.ducasse.free.fr / http://www.pharo.org 03 59 35 87 52 Assistant: Aurore Dalle FAX 03 59 57 78 50 TEL 03 59 35 86 16 S. Ducasse - Inria 40, avenue Halley, Parc Scientifique de la Haute Borne, Bât.A, Park Plaza Villeneuve d'Ascq 59650 France |
Administrator
|
In reply to this post by Sven Van Caekenberghe-2
Sven Van Caekenberghe-2 wrote
> Maybe his question is (also) why the automatic refactoring did it wrong, > the rules warned about the wrong use of #printString, suggested a fix, but > the solution is still using #printString, hence the same problem. I might be reading it wrong, but I thought everything worked as advertised, and the limitation was that there was no option to automatically fix the other warning about the printString. The "Use cascaded nextPutAll:’s instead of #, in #nextPutAll:" transformation did change: aStream nextPutAll: ' with value: ', count printString. to: aStream nextPutAll: ' with value: '; nextPutAll: count printString ----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Cheers,
Sean |
Yes but with such approach you still create an extra intermediary stream. The solution should be aStream count printOn: aStreamnextPutAll: ' with value: ‘. Now this is a bit more tricky to do. -------------------------------------------- Stéphane Ducasse 03 59 35 87 52 Assistant: Aurore Dalle FAX 03 59 57 78 50 TEL 03 59 35 86 16 S. Ducasse - Inria 40, avenue Halley, Parc Scientifique de la Haute Borne, Bât.A, Park Plaza Villeneuve d'Ascq 59650 France |
As far as I know: aStream nextPutAll: ' with value: ‘; print: count. Works with most streams, does not create intermediary streams, and is readable. On Sun, 27 Dec 2020 at 05:59, Stéphane Ducasse <[hidden email]> wrote:
|
Free forum by Nabble | Edit this page |