[swift-evolution] [Idea] Switching Comparable types: a new operator

Ross O'Brien narrativium+swift at gmail.com
Thu Feb 4 14:52:39 CST 2016

Compare two values, and react differently if the first is larger, the
second is larger, or they are equal.

An if statement will result in an 'if { } else if { } else { }' structure.
A switch can be used (case _ where x < y) but the compiler will complain
that the switch is not exhaustive, resulting in a redundant 'default' case.

I'd like to propose this addition to the Comparable type:

infix operator <=> {}

func <=> <C : Comparable> (lhs: C, rhs:C) -> NSComparisonResult


if lhs == rhs


return .OrderedSame


if lhs < rhs


return .OrderedAscending


return .OrderedDescending


This now allows code like this:

let x = 3

let y = 4

switch x <=> y


case .OrderedSame:


case .OrderedAscending:


case .OrderedDescending:



-- Ross
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160204/808aa26d/attachment.html>

More information about the swift-evolution mailing list