gpt4 book ai didi

swift - 使用 Int 枚举减少 Swift 3.0 中的高阶函数

转载 作者:可可西里 更新时间:2023-11-01 00:35:33 24 4
gpt4 key购买 nike

我正在学习与集合相关的 Swift 高阶函数。我有以下查询 reduce

enum Coin : Int {
case Penny = 1
case Nickel = 5
case Dime = 10
case Quarter = 25
}

let coinArray: [Coin] = [.Dime, .Quarter, .Penny, .Penny, .Nickel, .Nickel]

coinArray.reduce(0,{ (x:Coin, y:Coin) -> Int in
return x.rawValue + y.rawValue
})

我收到以下错误:

Declared closure result Int is incompatible with contextual type _

最佳答案

让我们看看 reduce 是如何声明的:

public func reduce<Result>(_ initialResult: Result, _ nextPartialResult: (Result, Element) throws -> Result) rethrows -> Result

看到 nextPartialResult 的类型了吗?它是 (Result, Element) -> Result。在您的情况下,Result 的类型是什么?它是 Int,因为您想将整个事物简化为一个整数。

因此,传递一个 (Coin, Coin) -> Int 在这里真的不起作用,对吗?

您应该传入 (Int, Coin) -> Int

coinArray.reduce(0,{ (x:Int, y:Coin) -> Int in
return x + y.rawValue
})

或者简单地说:

coinArray.reduce(0) { $0 + $1.rawValue }

关于swift - 使用 Int 枚举减少 Swift 3.0 中的高阶函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45124805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com