【发布时间】:2015-06-07 13:54:04
【问题描述】:
我是 Swift 新手,正在尝试编写我的第一个函数来调用用户传入的闭包。我无法调用我的函数(我将其命名为 fun)。我也无法在网上找到任何这样的例子。我只想调用我的闭包(我不确定要传递给它什么?)然后根据布尔结果做出决定?这似乎很容易,但我不确定。
该方法的目标是根据用户规范删除数组中的重复项。在我的情况下,我可能想传入某个类及其数组,然后删除所有具有相同名称属性的类(即匹配的名称字符串)。
extension Array{
func removeDuplicates<T: Comparable>(fun: (elem: T, arr: [T]) -> Bool) -> [T]
{
var array = [T]()
for element in self
{
if fun(elem: T(), arr: [T])
{
println("hello")
}
}
return array
}
}
【问题讨论】:
-
对不起,它是数组扩展的一部分。所以你可以在你选择的任何数组上调用这个方法。我更新了代码块。
-
我还没有看到你真正想要实现的目标。在任何情况下,您不能编写仅适用于受限类型元素(即仅适用于
Comparable的数组)的数组扩展方法。请参阅stackoverflow.com/questions/24938948/… 或stackoverflow.com/questions/27350941/…。 -
另外,这听起来不像是要删除重复项,而只是过滤。在这种情况下,只需使用原生的
filter方法即可。 -
是的,没错,我的解释是错误的。我真的只想返回一个不包含我指定的属性重复的数组。