Swift 函數

1: 函數形式:swift

Swift函數以關鍵字func 標示。返回類型->後寫明。若是沒有返回類型能夠省去。多個參數用,分割。其中參數名字在前:類型描述函數

func GetName(strName:String)-> String
{
    return "for " + strName
}
let name = GetName("xx")
println("\(name)")

2:函數返回值:函數返回值用->後跟類型說明符號。函數的多返回值。能夠用元組返回複合多值。固然也能夠沒有返回值。spa

func TestNoneReturn(strName:String)
{
   println("\(strName)")
}

TestNoneReturn("xx ")

 

func TestReturn(strName:String)->String
{
    return strName + "hello"
}

let showName = TestReturn("xx ")
println("\(showName)")

 

func TestTupleReturn(iAge:Int, strName:String)->(iAgeAdd:Int, strNameFormat:String)
{
    let iAgeReturn :Int = iAge + 90
    let strNameReturn :String =  " xx oo " + strName;
    
    return (iAgeReturn, strNameReturn)
}

let tupleReturn = TestTupleReturn(3, "yang ")
println("\(tupleReturn.iAgeAdd) \(tupleReturn.strNameFormat)")

3:函數參數code

 3.1函數參數默認爲let類型的。若是你想更改參數副本,那麼你要顯示使用var修飾。固然也能夠不須要參數的函數。若是你像更改參數做爲輸入輸出用inout,調用時候要用取地址符號&orm

func GetName(var strName:String)-> String
{
    strName += " hello"
    return "for " + strName
}
let name = GetName("xx")
println("\(name)")
func GetName(inout strName:String)
{
    strName += " hello"
    
}
var strTest = "oo"
GetName(&strTest)
println("\(strTest)")

3.2函數參數名字。函數形參名字有本地形參和外部形參之分。blog

func someFunction(externalParameterName localParameterName: Int){
func TestName(strHead:String, strTail:String, strInsert:String)->String{
    return strHead + strInsert + strTail
}

let strRes:String = TestName("head ", "tail ", "insert ")
println("\(strRes)")

 

func TestName(head strHead:String, tail strTail:String,insert strInsert:String)->String{
    return strHead + strInsert + strTail
}

let strRes:String = TestName(head:"head ", tail:"tail ", insert:"insert ")
println("\(strRes)")

若是你外部和本地形參名字同樣,那麼你能夠用#簡寫。it

func TestSameName(#name:String, #age:String)->String{
    return "name: " + name + "\nage: " + age
}

let strRes = TestSameName(name:"xx", age:"30")
println("\(strRes)")
 

3.3函數參數默認值:若是設置了函數默認值,那麼在調用的時候能夠省去默認值的調用。io

func TestDefaultParam(name:String, defaultName:String = " defaultNM"){
    let nameRes = 「\n」 + name + defaultName;
    println(nameRes)
}
TestDefaultParam("mm")
TestDefaultParam("xx", defaultName:" oo")

3.4 可變形參:用"..."表明可變形參。類型同樣class

func TestMore(numbers:Int...){
    var iRes:Int  = 0
    for item in numbers {
        iRes += item
    }
    println("\(iRes)")
}
TestMore(1,2,4)
TestMore(1,2,4,5,6)

 

4:函數類型:由函數參數類型與順序以及函數返回值類型變量

func(iAge:Int, strName:String)->String
{ 
   return "KO"
}
//該函數類型能夠記爲:(Int, String)->String

在 swift 中您能夠像任何其餘類型同樣的使用函數類型。例如,你能夠定義一個常量或變量 爲一個函數類型,併爲變量指定一個對應函數

func AddTwoInts(a: Int, b: Int) -> Int { 
 return a + b
 }

var AddFunction:(Int, Int)->Int = AddTwoInts
這樣你能夠用AddFuncton調用方法,其實有點相似與AddFunction是函數AddTwoInts的名字變量
var iRes = AddFunction(1, 4)
同其餘變量同樣,它還支持類型推斷

let AnotherMathFunction = AddTwoInts

 var iOther = AnotherMathFunction(5, 6)

 

函數類型能夠做爲函數參數使用

func PrintMathResult(MathFunction: (Int, Int) -> Int, a: Int, b: Int)
{
2. println("Result: \(MathFunction(a, b))") 3. }
4. PrintMathResult(AddTwoInts, 3, 5)

函數類型也能夠做爲返回類型

func FunctionTest(a:Int, b:Int)->(Int, Int) -> Int{
}
相關文章
相關標籤/搜索