[: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>:

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
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org