zoukankan      html  css  js  c++  java
  • Swift 函数

    1: 函数形式:

    Swift函数以关键字func 标示。返回类型->后写明。如果没有返回类型可以省去。多个参数用,分割。其中参数名字在前:类型描述

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

    2:函数返回值:函数返回值用->后跟类型说明符号。函数的多返回值。可以用元组返回复合多值。当然也可以没有返回值。

    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:函数参数

     3.1函数参数默认为let类型的。如果你想更改参数副本,那么你要显示使用var修饰。当然也可以不需要参数的函数。如果你像更改参数作为输入输出用inout,调用时候要用取地址符号&

    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函数参数名字。函数形参名字有本地形参和外部形参之分。

    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)")

    如果你外部和本地形参名字一样,那么你可以用#简写。

    func TestSameName(#name:String, #age:String)->String{
        return "name: " + name + "
    age: " + age
    }
    
    let strRes = TestSameName(name:"xx", age:"30")
    println("(strRes)")
     

    3.3函数参数默认值:如果设置了函数默认值,那么在调用的时候可以省去默认值的调用。

    func TestDefaultParam(name:String, defaultName:String = " defaultNM"){
        let nameRes = “
    ” + name + defaultName;
        println(nameRes)
    }
    TestDefaultParam("mm")
    TestDefaultParam("xx", defaultName:" oo")

    3.4 可变形参:用"..."代表可变形参。类型一样

    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{
    }
  • 相关阅读:
    PSP ISO游戏运行必备工具:ISO TOOL 1.970 功能一览&图文教程
    Linux防火墙(原书第3版) 电子书籍
    iptables的相关概念和数据包的流程(图)
    oracle数据库远程连接服务器配置tnsnames
    编程感悟
    工作任务三 打印表单数据
    UltraWebTree的使用心得
    DropDownList应用
    使用UltraWebTree时,如何在刷新后展开之前选中的节点,并绑定相关数据
    webgrid 添加行是不允许相同
  • 原文地址:https://www.cnblogs.com/zhidao-chen/p/3868411.html
Copyright © 2011-2022 走看看