Functions
Functionsare self-contained chunks of code that perform a specific task. You give a function a name that IDentifIEs what it does,and this name is used to “call” the function to perform its task when needed.
函数是以一个用来执行特殊任务的自包含代码块
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html#//apple_ref/doc/uid/TP40014097-CH10-ID158
Closures:
@H_403_44@Closuresare self-contained blocks of functionality that can be passed around and used in your code. Closures in Swift are similar to blocks in C and Objective-C and to lambdas in other programming languages.
和函数一样也就是代码块,和C,OC里面的block相似,和其他语言的匿名函数相似
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html#//apple_ref/doc/uid/TP40014097-CH11-ID94
表达式如下:
{ (parameters) -> return type in
statements
}
Global 和nested函数实际上是closure的特例:
Global函数:一个有名字但不获取任何值的closure
nested函数:有名字,同时能够获取到他们enclosing function里的值
Closure 式子:一个轻量级语法书写的没有名字的closure,同时能够获取到他所处的 context中的值
这边有个例子
//csdn 竟然没有swift这个语言的标签==
// 点击 *** 作按钮 @IBAction func operate(sender: UIbutton) { let operation = sender.currentTitle! if isUserInMIDdleOfTyPingNumber { enter() } switch operation { case "×":performOperation {func someFunctionThatTakesAClosure(closure: () -> ()) { // function body goes here} // here's how you call this function without using a trailing closure: someFunctionThatTakesAClosure({ // closure's body goes here}) // here's how you call this function with a trailing closure instead: someFunctionThatTakesAClosure() { // trailing closure's body goes here}* } // Trailing closure 这边传入的其实是 function type 这个nested function就可以直接这么写了 case "÷":performOperation { / } case "+":performOperation { + } case "−":performOperation { - } case "√":performOperationSqrt { sqrt()} default: break } } // function type as Parameter Type func performOperation(operation: (Double,Double) -> Double) { if operandStack.count >= 2 { displayValue = operation(operandStack.removeLast(),operandStack.removeLast()) enter() } }
之前一直看不懂这语法,今天来解释下
function 和closure分别有Trailing functions 和 Trailing Closures
// 如果啊 你要传的这个closure Expression是这个function唯一的argument,你连这a pair ofparentheses ()都不用写!!! 总结//含义为 如果你要传一个closure Expression或 function type给function,当作它最后的一个参数时,你可以这么写
以上是内存溢出为你收集整理的Swift Function & Closure全部内容,希望文章能够帮你解决Swift Function & Closure所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)