有两种方法嵌套函数/关闭:
当你知道了:
func test() -> Bool {
func test1() -> Bool {
return true
}
func test2() -> Bool {
return true
}
func test3() -> Bool {
return true
}
return test1() && test2() && test3()
}
或者将其保存到关闭和美其名曰:
func test() -> Bool {
let test1 = {() -> Bool in
return true
}
let test2 = {() -> Bool in
return true
}
let test3 = {() -> Bool in
return true
}
return test1() && test2() && test3()
}
真是天壤之别小,它归结于你自己的喜好,但直接从文件:
嵌套函数是具有名称并可从其封闭函数捕获值的闭包。
和
闭合表达式是写在一个轻量级的语法,可以从他们的周围上下文捕捉值的未命名关闭。
无论哪种方式,这两种情况都与()
在执行他们的动作名称的末尾被调用,否则你返回一个函数,而不是它的评价。你return test1
将是唯一有效的在这种情况下:
func test() -> (() -> Bool) {
func test1() -> Bool {
return true
}
return test1
}
在您的函数的返回类型为功能返回布尔后,您评估它。您想要评估,并返回与逻辑AND语句组合的Bool值。因此,您必须评估每个函数以获取每个函数的Bool值,以便将其合并并返回最终值。
感谢米哈尔这样精心设计的答案! –
@MinkeshJain只是试图解释发生了什么,不只是盲目地给修补程序:) – Michal
@MinkeshJain不要忘记标记帮助你接受的答案。如果您的问题尚未解决,请随时提问。 – Michal