Swift初识-3

七、函数
       1、定义格式: func 函数名(形参列表)->(返回值类型){  }
形参列表格式:      形参名1: 形参类型1,形参名2: 形参类型2,. . .

    func math(num: Int, num1: Int, str: String) -> Int { return num + num1 }

 
       2、没有返回值、无参:
三种写法:1)func mathed1(age: Int, name: String) -> Void { }
                    2)func mathed2() -> () { }              //  无参形式
                    3)func mathed3(age: Int, name: String) { }
 
       3、返回元组: 一个函数可以返回元组数据

func find(id: Int) -> (name: String, age: Int) {

    if id > 0 {

        return ("jack", 12)

    } else {

        return ("None", 0)

    }

}

var person = find(12)

print("he is name \(person.name), age is \(person.age)")

 
       4、外部参数名: 一般情况,通过形式参数的名字,就能推断出参数的含义和作用

func addStudent(name: String, age: Int, id: Int) {  }         

     addStudent("jack", age: 12, id: 1024)

在函数内部一看参数名就知道参数作用,但是形式参数是用在函数内部的,当调用函数时就看不见形参的名字,有可能导致以后会不太明白每个参数的含义
        定义格式: func 函数名(外部参数名  形式参数名:形参类型)->(返回值类型){  }

func addStudent(name: String, Stu_age age: Int, Stu_age id: Int) {}         

     addStudent("Jack", Stu_age: 12, Stu_age: 20)

⚠️一旦定义了外部参数名,在调用函数时就必须加上外部参数名

简写:使用#能简化外部参数名的定义 (新语法修改了,不再适用Swift 3)

 

       5、默认参数值: 可以在定义函数时,给形参指定一个默认值,调用函数时,就可以不用给这个形参传值 - func math(name: String, age: Int = 12) { }  math("jack”)  // age参数有个默认值12,调用函数时可以不传值给age参数
        带有默认参数值的形参,swift会自动给他生成一个跟形参名相同的外部参数名
若要传入age参数值时:math(“jack”, age: 21) 
在带有默认参数值的参数名前加下划线 _,调用函数时就不用写外部函数参数名

func math(name: String, _ age: Int = 12) { }   math("jack", 23)

 
       6、常量参数: 默认情况,函数参数都是常量参数,不能在函数内部修改

func math(let name: String)   // let 可省略

      7、变量参数: 可能需要在函数内部修改参数的值,这时需要定义变量参数
在参数名前加 var 即可:func math( var num: Int) { num = 10 }

func append(var string: String, suffix: String, count: Int) -> String {

    for _ in 0..<count{

        string += suffix

    }

    return string

}

       8、输入、输出参数: 在C语言中,利用指针可以在函数内部修改外部变量的值。在swift中利用输入输出参数,也可以在函数内部修改外部变量的值。
            8.1、基本使用: 能输入一个值进来,也可以输出一个值到外部
定义:在参数名前面加个inout关键字即可   func math(inout num: Int)   math(&a)

func change(inout num1: Int, inout num2: Int) -> () {

    let temp = num1

    num1 = num2

    num2 = temp

}              // 交换外部变量的两个值

var a = 20; var b = 10

change(&a, num2: &b)   // 传入的参数前面必须加 &

 

            8.2、面试题: 如何在不利用第三方变量的前提下交换两个变量的值

    num1 = num1 + num2     &     num1 = num1^num2

    num2 = num1 - num2     &     num2 = num1^num2

    num1 = num1 - num2     &     num1 = num1^num2

 
            8.3、使用注意: 输入输出的参数使用注意
传递实参时,必须在实参前面加上& ;不能传入常量或者字面量(比如10)作为参数值(因为不可改)
输入输出参数不能有默认值;输入输出参数不能是可变参数
输入输出参数不能使用  let、var 修饰( inout  和  let 、var 不能共存)
            8.4、其他价值:
可以实现函数的多返回值(其实让函数返回元组类型,也能实现返回多个值)

func plusAndMinus(num1: Int, num2: Int) -> (sum: Int, min: Int) {

    return (num1 + num2, num1 - num2)

}

var  result = plusAndMinus(22, num2: 14)

result.sum   //  36

 

result.min   //  8

 

func plusAndMinus(num1: Int, num2: Int,inout sum: Int, inout min: Int) -> () {

    sum = num1 + num2

    min = num1 - num2

}

var sums = 0; var mins = 0

plusAndMinus(12, num2: 6, sum: &sums, min: &mins )

sums   // 18

mins   // 6

 

转载于:https://www.cnblogs.com/Miracle-Huang/p/5804712.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值