Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 分配最小-最大变量/解构数组的好方法?_Swift - Fatal编程技术网

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

Swift 分配最小-最大变量/解构数组的好方法?,swift,Swift,我正在寻找一个表达式,将两个数字中的最小值和最大值分配给变量 有几种方法是有效的 let a = 2 let b = 1 let (min, max) = (min(a, b), max(a, b)) 但是我想要一些更灵活的东西,比如说 let sorted = [a, b].sorted{$0 < $1} let (min, max) = (sorted.first, sorted.last) let sorted=[a,b]。排序{$0

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

有几种方法是有效的

let a = 2
let b = 1

let (min, max) = (min(a, b), max(a, b))
但是我想要一些更灵活的东西,比如说

let sorted = [a, b].sorted{$0 < $1}
let (min, max) = (sorted.first, sorted.last)
let sorted=[a,b]。排序{$0<$1}
let(最小值,最大值)=(排序。第一,排序。最后)
但是有两行。。。我在寻找类似的东西:

let (min, max) = [a, b].sorted{$0 < $1}
let(min,max)=[a,b]。排序{$0<$1}
但这并不能编译,我认为是因为不可能解构数组,至少以这种方式是不可能的,而且似乎没有一种干净/有意义的方式将其转换为元组


我错过了什么?我知道这其中有一个优雅的表达方式。

我只想做你(预编辑)的第一个变体:

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

好的,我同意这是一个更好的(第一个/预编辑)。我(不是很重要)的问题是,我必须多次编写a和b,如果这是长表达式(例如view.frame.width),它会变得有点混乱,或者我必须引入局部变量。函数是个好主意,不过现在我对探索内置功能感兴趣…:PYeah某种数组到元组的解构会很好,但由于元组在编译时的大小是固定的,所以就不那么简单了。但我已经看到了一些很好的例子,说明了如何添加某种解构作为阵列扩展–找不到我现在正在考虑的那个,但我会继续查找。
func minmax<T: Comparable>(a: T, b: T) -> (T,T) {
    return a < b ? (a,b) : (b,a)
}
let (min,max) = minmax(a, b)