在Swift中,isSeparator:参数接受闭包
public func split(maxSplit: Int = default, allowEmptySlices: Bool = default, @noescape isSeparator: (Self.Generator.Element) throws -> Bool) rethrows -> [Self.SubSequence]但是在文档中,它列出了不同的闭包语法。
{ (parameters) -> return type in
statements
}您如何知道(Self.Generator.Element) throws -> Bool rethrows指闭包/要求闭包?标头/文档是否有其他方法可以将参数列出为闭包?
发布于 2016-01-07 22:38:59
这是一个闭幕式的“东西”是->。完整类型是
(Self.Generator.Element) throws -> Bool这意味着闭包接受一个Self.Generator.Element类型的变量,并且必须根据输入返回一个Bool。这样做时,它可能还会抛出一些错误--这就是抛出的目的。
然后你写了什么
{ (parameters) -> return type in
statements
}将是一个实际的实现,某个泛型闭包类型的值。
例如,闭包的类型是(someInt:Int, someDouble:Double) -> String。
var a : ((someInt:Int, someDouble:Double) -> String)再次指出,a实际上是一个闭包,这是类型声明中的->。
然后,通过第二个代码块后面的代码段将一些东西分配给a:
a = { (integer, floating) -> String in
return "\(integer) \(floating)"
}发布于 2016-01-07 22:42:55
你可以从论点的类型看出来。Swift中的所有东西都有一个类型,包括函数和闭包。
例如,这个函数..。
func add(a: Int, to b: Int) -> Int { return a + b }...has型(Int, Int) -> Int.(它以两个Int作为参数,并返回一个Int。)
这个结局..。
let identity: Int -> Int = { $0 }...has型Int -> Int.
每个函数和闭包都有一个类型,在类型签名中总是有一个->将参数与返回值分开。因此,每当您看到一个参数(如isSeparator)中有一个->,您就知道该参数需要一个闭包。
https://stackoverflow.com/questions/34666343
复制相似问题