gpt4 book ai didi

swift - Mapreduce调用不明确

转载 作者:行者123 更新时间:2023-11-30 11:48:10 26 4
gpt4 key购买 nike

我有以下代码:

func update(withSlices newSlices: [HAPieChartSlice], totalValue: CGFloat? = nil, animation: HAPieChartAnimation = .none, animationDuration: TimeInterval = 0.0) {
let totalValue: CGFloat = totalValue ?? newSlices.map({ $0.value }).reduce(0.0, { $0 }) //Type of expression is ambiguous without more context

我在上面代码中的 reduce 函数上遇到编译错误。错误是

Type of expression is ambiguous without more context

我不确定为什么此代码不明确,因为 $0.valuetotalValue 都是 CGFloat

其他相关代码:

public struct HAPieChartSlice {
public let value: CGFloat
public let color: UIColor
}

为什么此调用被认为不明确?我该如何解决它?

最佳答案

我明白了。问题是我没有正确使用 reduce 函数。

reduce 方法定义为:

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

而且我不是在 nextPartialResult 参数中组合结果和元素参数的属性。由于 initialResult0.0 并且我仅使用 result 部分($0)进行缩减,因此 Xcode 无法推断我试图减少到什么类型。

将代码更改为此解决了问题:

let totalValue: CGFloat = totalValue ?? newSlices.map({ $0.value }).reduce(0.0, { $0 + $1 })

由于 $1CGFloat,Xcode 可以推断结果也是 CGFloat

关于swift - Mapreduce调用不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48593912/

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