首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >argument中闭包参数的语法是什么?

argument中闭包参数的语法是什么?
EN

Stack Overflow用户
提问于 2016-01-07 22:26:03
回答 2查看 970关注 0票数 5

在Swift中,isSeparator:参数接受闭包

代码语言:javascript
复制
public func split(maxSplit: Int = default, allowEmptySlices: Bool = default, @noescape isSeparator: (Self.Generator.Element) throws -> Bool) rethrows -> [Self.SubSequence]

但是在文档中,它列出了不同的闭包语法。

代码语言:javascript
复制
{ (parameters) -> return type in
    statements
}

您如何知道(Self.Generator.Element) throws -> Bool rethrows指闭包/要求闭包?标头/文档是否有其他方法可以将参数列出为闭包?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-07 22:38:59

这是一个闭幕式的“东西”是->。完整类型是

代码语言:javascript
复制
(Self.Generator.Element) throws -> Bool

这意味着闭包接受一个Self.Generator.Element类型的变量,并且必须根据输入返回一个Bool。这样做时,它可能还会抛出一些错误--这就是抛出的目的。

然后你写了什么

代码语言:javascript
复制
{ (parameters) -> return type in
    statements
}

将是一个实际的实现,某个泛型闭包类型的值。

例如,闭包的类型是(someInt:Int, someDouble:Double) -> String

代码语言:javascript
复制
var a : ((someInt:Int, someDouble:Double) -> String)

再次指出,a实际上是一个闭包,这是类型声明中的->

然后,通过第二个代码块后面的代码段将一些东西分配给a

代码语言:javascript
复制
a = { (integer, floating) -> String in
    return "\(integer) \(floating)"
}
票数 7
EN

Stack Overflow用户

发布于 2016-01-07 22:42:55

你可以从论点的类型看出来。Swift中的所有东西都有一个类型,包括函数和闭包。

例如,这个函数..。

代码语言:javascript
复制
func add(a: Int, to b: Int) -> Int { return a + b }

...has型(Int, Int) -> Int.(它以两个Int作为参数,并返回一个Int。)

这个结局..。

代码语言:javascript
复制
let identity: Int -> Int = { $0 }

...has型Int -> Int.

每个函数和闭包都有一个类型,在类型签名中总是有一个->将参数与返回值分开。因此,每当您看到一个参数(如isSeparator)中有一个->,您就知道该参数需要一个闭包。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34666343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档