【发布时间】:2017-06-06 00:00:05
【问题描述】:
所以,我有这个简单的代码
let arr = [8, 0, 2, 4]
let result = arr.first(where: { $0 == someparam })
print(result)
而且,我得到了错误
不能调用非函数类型'Int?'的值
这是因为 Array 类有一个实例属性first
我在 swift 文档网站上进行了很多搜索,但找不到任何说明我应该如何正确调用此方法的内容。
更看不懂Array类怎么会有同名的属性和方法实例
【问题讨论】:
-
someparam是什么?使用Int类型的someparam编译对我来说很好。 -
first() 带括号是一种方法。首先不带括号的是属性。 first 以其参数作为 Apple 的差异化因素而重载。 first() 方法查找与谓词匹配的元素的第一次出现,而第一个属性将返回数组的第一个元素。
-
我遇到了同样的问题。错误信息具有误导性。我在 lambda(闭包)中有问题。我重写了闭包,它现在可以工作了。
-
在我的情况下,我在 where 比较中放置了“=”而不是“==”。只需忽略误导性错误消息并仔细检查您的闭包是否存在任何语法错误。希望这会有所帮助。