使用Swift的数组中的最大偶数

使用Swift的数组中的最大偶数,swift,max,Swift,Max,我是Swift的初学者,我正在尝试创建一个函数来确定数组中最大的偶数,下面是我的代码,但它不起作用: func largestEven(array: [Int]) -> Int { let array = [5,12,6,8] var evenArray = array.filter({$0 % 2 == 0}) let highestEven = evenArray.max() return highestEven } print(largestEven(ar

我是Swift的初学者,我正在尝试创建一个函数来确定数组中最大的偶数,下面是我的代码,但它不起作用:

func largestEven(array: [Int]) -> Int {

let array = [5,12,6,8]
    
var evenArray = array.filter({$0 % 2 == 0})
    
let highestEven = evenArray.max()

return highestEven

}

print(largestEven(array: [5,12,6,8]))
改变


原因是
max()
产生一个可选的Int,因为数组可能是空的。所以你不能返回一个简单的Int;必须返回该可选值。

不确定为什么要在函数中定义本地数组

一个简单的实现可以是(注意可选的Int作为返回类型):


“不工作”在技术术语中的含义是什么?虽然在本例中错误是明确的,但对于以后的问题,请确保在问题中包含错误消息(或者,如果没有错误消息,请说明错误行为)所以人们不必去猜错了什么。只是为了好玩,单次迭代解决方案
array.reduce(nil){$1.isMultiple(of:2)&$1>($0???.min)?$1:$0}
Lmao,这里有一个荒谬的解决方案
array.max{$1.isMultiple(of:2)&&(!$0.isMultiple(of:2)| 0
,只是为了好玩。我从一个闭包开始,该闭包使用switch语句在比较的任意两个元素的偶数/奇数上分支,比如
switch($0.isMultiple(of:2),$1.isMultiple(of:2))
。如果
$1
为偶数而
$0
为奇数,则返回
true
;如果两者均为偶数,则返回
$0
,每隔一次返回false。从那里你可以把它简化为一个布尔值expression@Alexander-如果这将返回
5
,对于
[5]
,您可以
.lazy
它来防止中间数组分配。
func largestEven(array: [Int]) -> Int {
func largestEven(array: [Int]) -> Int? {
func largestEven(array: [Int]) -> Int? {
    array.filter { $0.isMultiple(of: 2) }.max()
}