【发布时间】:2017-03-22 22:51:39
【问题描述】:
我有下面这行代码
if let a = assetConfigs.first { $0.code == cells[2] }
{...}
assetConfigs 是 AssetConfig 类型的对象数组,它有一个名为 code 的属性
我得到了错误
Cannot call value of non-function type AssetConfig?
我只想要第一个资产配置,它与单元格[2] 中包含的值具有相同的代码。 Swift 下的数组有一个叫做first 的函数,它返回第一个满足特定条件的对象。 (https://developer.apple.com/reference/swift/array/1848165-first)
我做错了什么?
【问题讨论】:
-
如果你消除花括号
if let a = assetConfigs.first(where: { $0.code == cells[2] })的歧义,你会遇到同样的问题吗? -
您需要使用括号来消除尾随闭包的歧义,例如stackoverflow.com/q/34930596/2976878
-
好的,我明白了——因为编译器无法判断我是先调用属性'first'然后开始我的 if 语句块还是调用带有尾随闭包的函数'first'。我得到它。谢谢!
-
我遇到了同样的问题,但消除歧义似乎并不能解决它。如果你有这个编译和工作,请在问题的答案中提供一个例子