I have personally (ab)used this for the following:

class User {
        var email: String
        var firstName: String?
        var lastName: String?
}

You have a list of users based on email, so last name is optional. In Swift 
2.x, you can do:

users.sort({ $0.lastName < $1.lastName })

Now, you need to do:

users.sorted({
        guard let firstName = $0.0.lastName else {
                return true
        }
        
        guard let secondName = $0.1.lastName else {
                return false
        }
        
        return firstName < secondName
})

Which aside from being a brain teaser how to properly maintain ordering when 
$0.0's lastName != nil && $0.1's lastName == nil, adds additional few lines.

But I agree that it may come as confusing with Ints, etc. - with strings it 
kind of makes sense since nil is like an empty string which is placed in front 
of everything.

> On Aug 27, 2016, at 1:46 PM, Haravikk via swift-evolution 
> <[email protected]> wrote:
> 
> 
>> On 27 Aug 2016, at 02:01, Kevin Ballard via swift-evolution 
>> <[email protected] <mailto:[email protected]>> wrote:
>> 
>> This change is going to have a HUGE impact for me. I use this sort of 
>> comparison _all the time_ and find it incredibly useful, and have had 
>> literally zero bugs caused by this. Surely I can't be the only one who uses 
>> this. I am not looking forward to copying & pasting a reimplementation of 
>> the comparison functions into every single project I work on.
> 
> Can you give some examples as to how this will have such a huge impact? Now 
> that we have the ?? operator it seems that this is fairly easy to replace:
> 
>       value < 5 // where value is of type Int?
> 
> With:
> 
>       (value ?? 0) < 5
> 
> 
> The latter is completely clear what the behaviour of nil is.
> 
> Also, you can still re-add the operators where you need them, ideally with as 
> limited a type as possible so you can make sure that it's behaviour is well 
> defined.
> _______________________________________________
> 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