我是新来的地图还原和想玩它一点。我希望这个问题不要太愚蠢。
我有这个代码:

var str = "Geometry add to map: "
for element in geometryToAdd {
     str.append(element.toString())
}
print(str)

现在我想玩地图还原,因为我最近学会了。我重写如下:
print(geometryToAdd.reduce("Geometry add to map: ", {$0.append($1.toString())}))

这给了我一个错误error: MyPlayground.playground:127:57: error: type of expression is ambiguous without more context。我做错什么了?
var geometryToAdd: Array<Geometry> = []

类有一个功能。
谢谢你的帮助。

最佳答案

有两种类似的方法:

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

您使用的是第一个版本,其中$0是不可变的,并且闭包
必须返回累积值。这不会编译,因为
append()修改其接收器。
使用第二个版本可以编译:这里$0是可变的
闭包用累积值更新$0
print(geometryToAdd.reduce(into: "Geometry add to map: ", {$0.append($1.toString())}))

关于swift - 循环有效,尝试减少映射时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50177733/

10-10 21:34