[swift-evolution] [Proposal] Add property for negation to Bool

Brent Royal-Gordon brent at architechies.com
Sat May 21 18:45:38 CDT 2016


> This is code with negation operator:
> 	return !self.lanes[position.y][currentLaneRange].contains(.Gap)
> 
> As I sad before negation operation is hard to spot. Moreover at first it looks like I’m trying to negate self for some reason.
> 
> This is code with “not” property:
> 	return self.lanes[position.y][currentLaneRange].contains(.Gap).not

I do agree with you that `!` is sometimes hard to notice, but I think putting the "not" at the end is sort of burying the lede—"if the lane at position y's current lane range contains a gap…NOT!" I don't like making `not(_:)` a function, and I don't think we should introduce a freestanding keyword just for this, either.

One workaround is to write this instead:

	return !!!self.lanes[position.y][currentLaneRange].contains(.Gap)

Three nots is logically equivalent to one, but far more visible. Of course, then you have to worry about accidentally writing two or four, which would be the opposite.

-- 
Brent Royal-Gordon
Architechies



More information about the swift-evolution mailing list