
Pressed send to fast. Just wanted to add that this is how it works in pharo but no collection selector. Norbert
Am 28.03.2020 um 14:06 schrieb Norbert Hartl <norbert@hartl.name>:
[:year :month :day | Date newDay: day month: month year: year] valueWithPossibleArguments: (($- split: '2020-03-28') collect: #asNumber)
Norbert
Am 28.03.2020 um 13:42 schrieb Christian Haider <Christian.Haider@smalltalked-visuals.com <mailto:Christian.Haider@smalltalked-visuals.com>>:
Hi,
I am using a nice little method #destructDo: for a while now and it feels good. In VisualWorks: SequenceableCollection>>destructDo: aBlock "Evaluate aBlock with the receiver's elements as parameters. aBlock takes its arguments from the receiver. 'ok' #(1 2 3) destructDo: [:a :b :c | a + b + c] #(1 2 3) destructDo: [:a :b | a + b] #(1 2 3) destructDo: [:a | a] #(1 2 3) destructDo: [42] 'not ok' #(1 2 3) destructDo: [:a :b :c :d | a + b + c + d] " ^aBlock cullWithArguments: self asArray
In Amber: SequenceableCollection>>destructDo: aBlock ^aBlock valueWithPossibleArguments: self
In Pharo and other dialects, I don’t know, but should be as easy.
For example you can do (('2020-03-28' tokensBasedOn: $-) collect: #asNumber) destructDo: [:year :month :day | Date newDay: day monthNumber: month year: year]
I like that the block is not the receiver (like with #valueWithArguments or #cullWithArguments), but the last argument.
Now the questions: I am sure that others came up with this. Anybody knows? What are you using for this pattern? I don’t really like the name, but haven’t found anything better yet. Maybe #destructedDo: or just #destructed: or: #withPartsDo:… maybe something shorter? Ideas? What are you thinking about this?
Happy hacking, Christian
_______________________________________________ Esug-list mailing list Esug-list@lists.esug.org <mailto:Esug-list@lists.esug.org> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org <http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org>
Esug-list mailing list Esug-list@lists.esug.org http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org