Swift3之函数(一)

来源:互联网 发布:mirrorlink已认证软件 编辑:程序博客网 时间:2024/04/26 22:53

本文简书地址
原创内容,码字不易,费了大量的功夫的,转载请注明出处

学习步骤:

  1. 函数概述
  2. 常量参数,变量参数, I/O 参数

    1.函数 -- 常量参数
    2.函数 -- 变量参数(swift3.0已废弃)
    3.函数 -- I/O 参数
  3. 参数个数的从0到多

    1.函数 -- 不带参数
    2.函数 -- 带参数
    3.可变参数
  4. 返回值个数的从0到多

    1.没有返回值函数
    2.一个返回值
    3.多个返回值 -- 元组

一.先来了解一下函数:

Swift 定义函数使用关键字 func
定义函数的时候,可以指定一个或多个输入参数和一个返回值类型。
每个函数都有一个函数名来描述它的功能。通过函数名以及对应类型的参数值来调用这个函数。函数的参数传递的顺序必须与参数列表相同。
函数的实参传递的顺序必须与形参列表相同,-> 后定义函数的返回值类型。

func funcname(形参) -> 返回值类型
{
实现部分
return 返回值
}
//———————————
形参可以没有,但是()必须有
返回值可以没有,没有返回值时 ->也没有
如:func test(){ }

所以我们从形参(函数参数)返回值两部分来了解函数,至于实现部分则是功能模块,根据需要补充就行。

二. 常量,变量及 I/O 参数

1.函数 – 常量参数

默认在函数中定义的参数都是常量参数,也就是这个参数你只可以查询使用,不能改变它的值。

func 函数名( 参数变量:类型 ,参数变量:类型…){}
说明:
1: func 是函数关键字
2:{} 函数体
3: 参数变量是默认常量类型,不能在函数函数体里面直接修改

/*测试参数变量的默认类型*/func changeParam(value : Int) -> Int{    value += 1;    return value;}var test = 10;let A = changeParam(value:test);---------------------以上代码会报错,终端打印的错误信息是:left side of mutating operator isn't mutable: 'value' is a 'let' constant    value += 1;也就是说value 是 let 常量

2.函数 – 变量参数(swift3.0已废弃)

查看更多swift3.x的特性
过去可以在参数前加关键字 var 将其定义为变量,这样函数内部就可以对该参数进行修改(外部的参数任然不会被修改)。
现在这种做法已经被废弃❌,Swift 3 不再允许开发者这样来将参数标记为变量了。

func 函数名(var 参数变量 : 类型,… ) {}
说明
1: func 函数关键字
2: var 参数变量 :类型 表示参数变量是可变变量,不是常量,可以修改

❌ 现在已经不可用,写出来是为了学习过swift2的同学知道

现在只能用一个var变量接收常量参数来实现变量参数的功能了

 func changeParam( value : Int) -> Int    {      var value = value//下面再用到value就是变量类型了      value += 1;      return value;    }

3.函数 – I/O 参数

I/O参数又叫输入输出参数,它传入的参数是一个引用,在函数内部修改
了I/O参数,对应的外部参数也会发生改变。
当传入的参数作为输入输出参数时,需要在参数名前加 & 符,表示这个值可以被函数修改。
* 因为I/O参数和外部变量指向同一内存地址,修改的是同一内存的数据,所以内外同时改变。
*一般默认的参数传递都是传值调用(传入的只是这个参数的副本),而不是传引用。

func 函数名(参数: inout 类型) { }

var arr = [1,2,3,4,5];func testIOParam(dataArray: inout [Int]){    if dataArray.count > 0 {        dataArray .remove(at: 0);    }}testIOParam(dataArray: &arr);//传入的是arr对应的地址  &为取地址符print(arr);

输出结果为
[2, 3, 4, 5]

三. 函数参数

函数可以接受一个或者多个参数,这些参数被包含在函数的括号之中,以逗号分隔。
func 函数名(参数1:类型 ,参数2:类型,参数3:类型) {函数实现 }

1.函数 – 不带参数

func 函数名() -> 返回值类型
{
return 返回值
}

func test(){    print("无参函数")}

2.函数 – 带参数

func 函数名(参数1:类型 ,参数2:类型 ,参数3:类型) -> 返回值类型
{
return 返回值
}
参数个数根据需要而定

func add(a: Int, b: Int) -> Int{    return a + b;}print(add(a: 10, b: 5));

3.可变参数

可变参数可以接受零个或多个值。函数调用时,你可以用可变参数来指定函数参数,其数量是不确定的。
可变参数通过在变量类型名后面加入...的方式来定义。

func add(numbers: Int...) -> Int{    var totle = 0;    for num in numbers {        totle += num;    }    return totle;}print(add(numbers: 1,2,3,4,5));//调用时多个参数用 , 隔开

四. 函数返回值

1.没有返回值函数

/*     知道即可,主要是用于闭包,在阅读第三方框架代码时保证可以看懂即可。     1. 省略返回值   这种最常用。     2. 返回 ()     3. 返回 void    这三种形式在{ }内都不能使用return返回数据,否则会报错     */   //情况一    func 函数名(参数) { }    //情况二    func 函数名(参数) -> () { }    //情况三    func 函数名(参数) -> Void { }
func test1(){    print("无需return返回")}func test2() ->(){    print("无需return返回")}func test3() -> Void{    print("无需retrun返回")}

2.一个返回值

func 函数名(形参)-> 返回值类型
{
return 返回值
}

func add(a: Int, b: Int) -> Int{    return a + b;}print(add(a: 10, b: 5));

3.多个返回值 – 元组

多个返回值(大于1个)并不是用多个 ->实现返回,而是使用元组的形式。
不了解元组的同学可以看下这篇文章swift元组

//举例而已,不要在意函数有没有意义��func address(province:String ,city:String)->(province:String ,city:String){    return (province:province,city:city)}var addr = address(province: "河南", city: "郑州")print("省:\(addr.province),市:\(addr.city)")

返回值是元组的话,可以根据元组的不同声明方式来改变函数如

func address(province:String ,city:String)->(String ,String){    return (province,city)}var (addr1,addr2) = address(province: "河南", city: "郑州")print("省:\(addr1),市:\(addr2)")

自己研究元组吧,我就不墨迹了。


到这里大家看懂一般的函数已经没问题了,但是呢,总有一些意外情况,让学了以上部分的你感觉不知所措。学海无涯,我们接着来

Swift3之函数CSDN地址(二)
Swift3之函数简书(二)


原创粉丝点击