标签:
1.Swift函数的定义
func FuncName (形参列表) -> 实参列表 {
}
a.无参函数
import Foundation func SayHi() -> String { return "Hi Spursy" } var talk = SayHi() println(talk)
import Foundation
func SayHello (name : String) { println("Hi " + name) } SayHello ("Spursy")
b.外部参数与内部参数
func FuncName (OutParaName1 InnerParaName1 : Type1 , OutParaName1 InnerParaName1 : Type1) {
}
func FuncName (#InnerParaName1 : Type1 ,#InnerParaName1 : Type1) {
}
import Foundation
func area(长 length : Double,宽 width : Double) -> Double { return length * width } var scope = area(长: 10, 宽: 20) println(scope)
import Foundation func area (#length : Double ,#width : Double) -> Double { return length * width } var scope = area(length: 10, width: 20) println(scope)
c.可变参数
import Foundation func Sum (numbers : Int ...) -> Int { var total = 0 for number in numbers { total += number } return total } var sum = Sum(3,4,5,6,7,8) println(sum)
d. 默认参数
import Foundation func SayHi (msg : String,name : String = "Spursy"){ println(msg + name) } SayHi("Hi ")
import Foundation func SayHello (msg : String,name : String = "Spursy"){ println(msg + name) } SayHello("Hello ", name: "Artech")
e.变量形参
import Foundation func factory (var number : Int) -> Int { var result : Int = 1 while number > 1 { result = result * number number-- } return result } var result = factory(3) println(result)
f.In - Out 参数
能且仅能传递变量
形参不能有默认值
如果有I你Out就不能再有var或是let
func swap (inout a : Int,inout b : Int){ let tem = a a = b b = tem } var a = 10 var b = 20 swap(&a, &b) var msg = String("a = \(a), b = \(b)") println(msg)
2.函数的类型与函数的返回值
无返回值函数
func SayHi () {
}
有返回值函数
func area (para1 : Type1, para2 : Type2) -> (Type3) {
}
函数的类型
函数的类型作为常量或者是变量
func addTwoInts (a : Int,b : Int) -> Int{ return a + b } func multiplyTwoInts (a : Int,b : Int) -> Int { return a * b } var mathFunction : (Int,Int) -> Int = multiplyTwoInts var result = mathFunction(3,4) println(result)
函数的类型作为参数类型
func addTwoInts (a : Int,b : Int) -> Int{ return a + b } func multiplyTwoInts (a : Int,b : Int) -> Int { return a * b } func printMathResult (mathFunction : (Int, Int)-> Int,a : Int,b : Int) { var result = mathFunction(a,b) println(result) } printMathResult(addTwoInts,2,3)
函数的类型作为返回值的类型
func square(num : Int) -> Int { return num * num } func circle (num : Int) -> Int { return num * 4 } func GetMathFunc (#type : String) -> (Int) -> Int { switch(type){ case "square": return square default : return circle } } var pendingFunc = GetMathFunc(type: "other") println(pendingFunc(5))
函数的重载
func test ()
func test (msg : String)
func test (msg : String) -> String
func test (#msg : String) -> String
func test (#msg : String)
3.函数的闭包
嵌套函数
func GetMathFunc (#tyepe : String) -> (Int) -> Int { func Area (num : Int) -> Int{ return num * num } func Circle (num : Int) -> Int{ return num * 4 } switch ("Area") { case "Area": return Area default : return Circle } } var MathFunc = GetMathFunc(tyepe: "Area") println("result : \(MathFunc(5))")
闭包
{(形参列表) -> 返回值类型 in
可执行的表达式
}
func GetMathFunc (#tyepe : String) -> (Int) -> Int { // func Area (num : Int) -> Int{ // return num * num // } // func Circle (num : Int) -> Int{ // return num * 4 // } switch ("Area") { case "Area": return { (num : Int) -> Int in num * num } default : return { (num : Int) -> Int in num * 4 } } } var MathFunc = GetMathFunc(tyepe: "Area") println("result : \(MathFunc(5))")
利用上下文推断类型
var squre : (Int) -> Int = { num in return num * num } var result = squre(3) println(result)
闭包里只有一行代码时,可用$0,$1,,代替变量
var squre : (Int) -> Int = { $0 * $0 } var result = squre(3) println(result)
---恢复内容结束---
标签:
原文地址:http://www.cnblogs.com/spursy/p/4625669.html