Swift学习—函数

前端之家收集整理的这篇文章主要介绍了Swift学习—函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
知识点:

@H_404_6@
  • swift函数的不同点
  • 无返回值的函数的三种写法
  • 返回元组数据
  • 外部参数名
  • 外部参数名的简写
  • 默认参数值,有默认参数值的时候,系统会自动的将参数名当成外部参数名。
  • 在有默认的参数值的情况下,增加一个下划线_,系统会忽略掉外部参数名
  • 函数的形参默认是常量,想要在函数体的内部改变形参的值,将其设置成var即可
  • 输入输出参数及其注意点
  • 示例代码

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // sum函数名,num1和num2参数名,箭头后面的Int是返回类型
    func sum(num1: Int,num2: Int) -> Int {
        return num1 + num2
    }
    
    sum(1,2)
    
    // 无返回值的函数的三种写法
    func noRe1() -> Void {}
    func noRe2() -> () {}
    func noRe3(){}
    
    // 返回元组数据
    func getPoint() -> (Int,Int) {
        return (10,10)
    }
    func getPerson(id: Int) -> (name: String,age: Int){
        if id > 0 {
            return ("jack",20)
        } else {
            return ("nobody",10)
        }
    }
    
    var person = getPerson(10)
    println("name: \(person.name),age: \(person.age)")
    
    // 外部参数名,这里分别为name,age,no设置了外部参数名,stu_name,stu_age,stu_no
    // 作用,方便阅读
    func addStudent(stu_name name:String,stu_age age:Int,stu_no no:Int) {
        println("name: \(name),age: \(age),no:\(no)")
    }
    
    addStudent(stu_name: "jack",stu_age: 10,stu_no: 20)
    
    // 外部参数名的简写,在内部形参名的前面加上#号,这样内部形参名就也可以充当外部参数名
    func addStudent2(#name: String,#age: Int,#no: Int) {
        println("name: \(name),no:\(no)")
    }
    
    addStudent2(name: "Tom",age: 20,no: 222)
    
    // 默认参数值
    // 这里给age了一个默认值,所以调用的时候,不写也行
    // 有默认参数的形参,系统会给其提供一个外部参数名,和内部形参参数名相同
    func addStudent3(#name: String,age: Int = 20) {
        println("name: \(name),age: \(age)")
    }
    addStudent3(name: "Smith")
    addStudent3(name: "Hello",age: 10)
    
    // 在有默认参数名前增加一个下划线_,系统会忽略掉外部参数名
    func addStudent4(name: String,_ age: Int = 20) {
        println("name: \(name),age: \(age)")
    }
    addStudent4("A",2)
    
    // 函数的形参默认是常量,如果想在函数的内部修改形参的值,将形参设置成var即可
    func addStr(var initStr: String,suffix: String,num: Int) -> String {
        for _ in 0..<num {
            initStr += suffix
        }
        return initStr
    }
    addStr("A","B",10)
    
    // 输入输出参数,类似于C中的根据地址改变函数中变量的值
    /*
    注意:
    1、不能传入常量和字面量(比如10)数,因为他们都是不可更改的
    2、传递参数时候,必须在实参的前面加上&
    3、输入输出参数不能有默认值
    4、输入输出参数不能使可变参数
    5、输入输出参数不能再使用let、var修饰(inout和let、var不能共存)
    */
    func change(inout num: Int) {
        num = 10
    }
    var a = 20
    // 凡是输入输出参数,调用的时候前面都要增加&符号
    change(&a)
    println(a)
    
    // 如何在不使用第三个参数的情况下,交换两个数
    func swap(inout a:Int,inout b:Int) {
        a = a + b
        b = a - b
        a = a - b
    }
    // 算法2
    func swap1(inout a:Int,inout b:Int) {
    //    异或运算的特点,相同的会抵消
        a = a ^ b
        b = a ^ b
        a = a ^ b
    }
    
    var temp1 = 10
    var temp2 = 20
    swap(&temp1,&temp2)
    println("temp1 = \(temp1),temp2 = \(temp2)")
    
    
    var temp3 = 30
    var temp4 = 40
    swap1(&temp3,&temp4)
    println("temp1 = \(temp3),temp2 = \(temp4)")
    
    // 输入输出函数的使用价值
    // 举例:不用返回值也可以计算出和与差
    // 有返回值写法
    func sumAndMinus(num1: Int,num2: Int) -> (sum: Int,minus: Int) {
        return (num1 + num2,num1 - num2)
    }
    var result = sumAndMinus(10,20)
    result.sum
    result.minus
    
    // 输入输出函数写法
    func sumAndMinus2(num1: Int,num2: Int,inout sum:Int,inout minus:Int) {
        sum = num1 + num2
        minus = num1 - num2
    }
    var sum1 = 0
    var minus1 = 0
    sumAndMinus2(20,10,&sum1,&minus1)
    sum1
    minus1

    猜你在找的Swift相关文章