必要性 - >斯威夫特无效

时间:2015-08-11 03:09:53

标签: swift closures

在下面的代码中(使用Parse库),我有:

query.findObjectsInBackgroundWithBlock({(objects: [AnyObject]?, error: NSError?) -> Void in
    // yada yada
})

代码中是否需要-> Void in(相反,我还能使用其他东西吗?删除它会在Xcode中引发错误。)

非常是Swift的新手,所以这可能是一个愚蠢的问题......

2 个答案:

答案 0 :(得分:3)

in行是如何将参数输入块中的:

(objects: [AnyObject]?, error: NSError?) -> Void in

如果以其他方式了解 types ,您可以省略他们

objects, error in

但除非您在代码中以其他方式选取参数(in$0),否则您无法完全省略$1行,这会使您的代码变得困难了解。最好保留in行,以便了解参数是什么。

答案 1 :(得分:0)

这个-> Void in说封闭没有返回任何内容,in后面的内容是封闭的主体。 -> Void可以删除,因为Swift非常擅长推断类型。 in是必要的。

  

in关键字引入了闭包主体的开头。这个关键字表示闭包的参数和返回类型的定义已经完成,闭包的主体即将开始。

您可以在此处阅读有关闭包的更多信息:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html