> > Check for the nil value should be banned in my opinion. There are > well-known techniques to not have to use it (e.g., Null-object pattern).
Absolutely agree! :) My only fear is that it could encourage the use of nil instead of proper > Null Objects Sometimes it's impossible to always have Null Object in first place and we still have to do something like this: default1 ifNil: [ "Null object" ]. I even saw in many places values > ^ values ifNil: [ OrderedCollection new ] And it perfectly works. However, usage of blocks for such simple checks looks like overhead, isn't it? (and for modern kids it looks ugly too). Take a look how many languages already support ??: C#, Swift, PHP7 (yes, these php-coders had to wait until 7th version), JavaScript, Groovy (they name it Evil Operator), Objective-C. But yes, nils are evil :) Blocks are of course better, because they are lazy and don't get executed if value is not nil - complete opposite to null coalescing operator. Cheers, Alex On Wed, May 20, 2015 at 9:41 PM, Sven Van Caekenberghe <[email protected]> wrote: > Yes, #ifNil: is almost the same (except the #value): > > |default1 default2 default3 default4 | > default1 := nil. > default2 := nil. > default3 := 'foo'. > default4 := 'don''t care'. > default1 ifNil: [ default2 ifNil: [ default3 ifNil: [ default4 ] ] ] > > => 'foo' > > > On 20 May 2015, at 21:38, Damien Pollet <[email protected]> wrote: > > > > …ifNone: is a nice idiom, but not always available (in which case, we > should think about introducing it) > > > > ?? is basically an infix but eager version of #ifNil:, IMHO a pragmatic > thing to have; could be quite handy. > > My only fear is that it could encourage the use of nil instead of proper > Null Objects… and here we start bikeshedding > > > > On 20 May 2015 at 21:31, Sergio Fedi <[email protected]> wrote: > > > > In my experience those situations end up been handled by collections, > detect:ifNone: which even handles the case when all defaults are nil. > > > > But maybe that idiom is very common in another situations. > > > > > > > > -- > > Damien Pollet > > type less, do more [ | ] http://people.untyped.org/damien.pollet > > >
