在Swift中,我尝试使用max()和min()函数。
max<T : Comparable>(x: T, y: T, rest: T...) -> T
min<T : Comparable>(x: T, y: T, rest: T...) -> T
我试图以这种方式使用max()函数:
var paddleX: Int = Int(paddle.position.x) + Int(location.x - previousLocation.x)
max(paddleX, paddle.frame.x/2, nil)
但是我收到了这个错误:
无法转换表达式的&#39;()&#39;输入&#39; NilType&#39;
nil
会导致此问题吗?什么是rest: T...
应该是什么?
答案 0 :(得分:32)
根本没有传递任何东西。它是一个可变函数,您可以使用两个或多个参数调用它。
答案 1 :(得分:0)
您可以对简单的可比较数据类型使用空参数,如果您具有更复杂的数据结构,则需要提供闭包。注意:max
和min
的比较顺序如下:如果向后进行比较,则会得到错误的结果。
[(0, "a"), (2, "b"), (5, "f"), (6, "g")].min(by: {$0.0 < $1.0}) // min (0, "a")
[(0, "a"), (2, "b"), (5, "f"), (6, "g")].max(by: {$0.0 < $1.0}) // max (6, "g")