分配最小最大变量/解构数组的好方法?

Nice way to assign min max variables / deconstruct an array?

我正在寻找一个表达式来将 2 个数字中的最小和最大分配给变量。

有几种有效的方法

let a = 2
let b = 1

let (min, max) = (min(a, b), max(a, b))

但我想要更灵活的东西,例如

let sorted = [a, b].sorted{[=11=] < }
let (min, max) = (sorted.first, sorted.last)

但它是 2 行...我正在寻找类似的东西:

let (min, max) = [a, b].sorted{[=12=] < }

但这并不能编译,我认为是因为解构数组是不可能的,至少以这种方式是不可能的,而且似乎没有 clean/meaningful 将其转换为元组的方法。

我错过了什么?我知道在某个地方有一个优雅的表达方式。

我只是对您的第一个(预编辑)做一个变体:

let (min,max) = a < b ? (a,b) : (b,a)

如果你经常这样做,你可以将其包装在一个通用函数中以使其更整洁:

func minmax<T: Comparable>(a: T, b: T) -> (T,T) {
    return a < b ? (a,b) : (b,a)
}

这使得它在调用站点上非常漂亮且可读:

let (min,max) = minmax(a, b)