Swift基础语法: 21 - Swift的可变形形参, 常量形参, 变量形参, In-Out形参

Swift基础语法: 21 - Swift的可变形形参, 常量形参, 变量形参, In-Out形参,第1张

概述1.可变形形参 在Swift中, 有一个很有趣的参数定义方式, 那就是在类型名后添加 “( … )” 这个符号, 这种定义方法, 可以让我们在调用的时候随意传递任意数量的输入值, 比如: func arithmeticMean(numbers: Double...) -> Double { var total: Double = 0 for number in numbers { 1.可变形形参

在Swift中,有一个很有趣的参数定义方式,那就是在类型名后添加 “( … )” 这个符号,这种定义方法,可以让我们在调用的时候随意传递任意数量的输入值,比如:

func arithmeticmean(numbers: Double...) -> Double {    var total: Double = 0    for number in numbers {        total += number    }        return total / Double(numbers.count)}var a = arithmeticmean(1,2,3,4,5)println("a is \(a)")// 打印出来的结果: a is 3.0var b = arithmeticmean(3,8,19)println("b is \(b)")// 打印出来的结果: b is 10.0
2.常量形参和变量形参

函数的形参默认是常量。如果在函数体内修改该形参的数值,编译器是会报错的,那我们应该怎么做呢? 下面让我们来看看:

func alignRight(var string: String,count: Int,pad: Character) -> String {    let amounttopad = count - countElements(string)    if amounttopad < 1{        return string    }    let padString = String(pad)    for _ in 1...amounttopad {        string = padString + string    }    return string}let originalString = "hello"let paddedString = alignRight(originalString,10,"-")println(paddedString)// 打印出来的结果: -----hello

PS: 这里面所定义的函数alignRight是用来给字符串排序用的,而例子中的排序是从左往右的排序,每一个新加入的字符都会往左边添加,而这个例子里面的形参 string 前面就加了 var,这样子我们就可以一直更新字符串的排序.

3.In-Out 形参

变量形参有一定的局限性,变量形参所做的改变不会比调用函数更持久,并且在函数体外是不可见的,变量形参仅存在于函数调用的声明周期中,如果要在函数调用结束后继续保持形参值的改变,那么就要把形参改成In-Out形参,比如:

func swapTwoInts(inout a: Int,inout b: Int) {    let temporaryA = a    a = b    b = temporaryA}var someInt = 3var anotherInt = 107swapTwoInts(&someInt,&anotherInt)println("someInt is Now \(someInt),and anotherInt is Now \(anotherInt )")// 打印出来的结果: someInt is Now 107,and anotherInt is Now 3

PS: In-Out 参数不能有默认值,可变参数的参数也不能被标记为 inout. 如果您标记参数为 inout,它不能同时被标记为 var 或 let.

如果我们只是简简单单的用了可变形参的话,那么出来的结果就不是如此了,var b: Int) { let temporaryA = a a = b b = temporaryA}var someInt = 3var anotherInt = 107swapTwoInts(&someInt,anotherInt)println("someInt is Now \(someInt),and anotherInt is Now 107

PS: In-out 形参不同于从函数返回一个值,上边 swapTwoInts 例子没有定义返回类型或者返回值,但它仍然会修改 someInt 和 anotherInt 的值,对函数来说,In-out 形 参是一个影响函数主体范围外的可选方式.

好了,这次我们就讲到这里,下次我们继续~

总结

以上是内存溢出为你收集整理的Swift基础语法: 21 - Swift的可变形形参, 常量形参, 变量形参, In-Out形参全部内容,希望文章能够帮你解决Swift基础语法: 21 - Swift的可变形形参, 常量形参, 变量形参, In-Out形参所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1088725.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存