Hi Tim, What I found confusing there is that with #select:thenCollect: or #collect:thenXxx: you're always dealing with collections.
In your #collect:ifNone: there is a mix. You can return a collection (#collect:) or the result of evaluating the emptyBlock, which in your example is a number, so I it seems like a semantic mismatch smell to me. Following your example: myVar := result ifEmpty: [ 0 ] ifNotEmpty:[ :r | r collect: [:I | i hours ]]. What will be in myVar? a collection? a number? something else?. Maybe your example is too abstract to give a good feedback. Regards, On 30/04/2018 15:37, Tim Mackinnon wrote: > > Hi - I hit a small bug in my lunch experiments with Willow where I wanted to > sum up a collection of support hours. > > I was collect: in the hours worked and hadn’t accounted for an empty > collection. > > When I went to do it I was surprised there isn’t a concept of > #collect:ifNone: that mirrors something like at:ifAbsent: or the nicely > readable collect:thenXxx: methods. > > Why is this? > > I’m curious about style - and the elegance of my workaround : > > result ifEmpty: [ 0 ] ifNotEmpty:[ :r | r collect: [:I | i hours ]] > > which is ok, but seems a mouthful? > > Am I missing a trick? > > Tim > > Sent from my iPhone > -- Esteban A. Maringolo