Hi,

The .! syntax is a bit gross I think.  The problem is that programmers
are very familiar with the NOT <something> semantics. So while changing
it might be pleasing from a natural language perspective, it will seem
strange from the programmer perspective. I guess you cant win!

I like the suggestion of adding a negative form of the method. However
syntax changes are not going to happen for a while now I believe.

Thanks,
James


On Sat, Aug 6, 2016, at 07:32 PM, Anton Zhilin via swift-evolution wrote:
> 2016-08-06 10:37 GMT+03:00 Darren Mo via swift-evolution <swift-
> [email protected]>:
>> Consider code like
>>
>>  guard !parameters.contains(where: { !validValueRange.contains($0) })
>>  else …
>>
>>  Oftentimes I need to write negation expressions like this. The
>>  location of the exclamation marks really bugs me when writing and
>>  reading this code. The natural English ordering would be
>>  something like
>>
>>  “Make sure parameters does not contain an element such that
>>  validValueRange does not contain this element.”
>>
>>  But the programming-language-imposed ordering is
>>
>>  “Make sure NOT parameters contains an element such that NOT
>>  validValueRange contains this element.”
>
> One solution to this problem would be to add negative method versions
> wherever possible. For example: 'all', 'any', 'some', 'none' methods
> instead of just 'contains(where:)'.
> Plus, we could add 'unless' alongside 'guard'. But these features were
> postponed to Stage 2.
> _________________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to