分配最小最大变量/解构数组的好方法?
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)
我正在寻找一个表达式来将 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)