在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Default Parameter Values (参数默认值) 在定义函数的时候,你可以给任何参数定义一个默认的值,如果定义了默认值,在调用这个函数的时候,你可以忽略这个参数. 注意: 设置参数默认值的时候,需要按照函数的参数列表最后的开始,这可以确保在调用函数的时候,即使没默认值的参数也可以按顺序的对应上,也使得函数在调用的时候更加清晰. 下面的代码例子是join函数的新版本,它使用了默认参数: func join(string s1: String, toString s2: String, withJoiner joiner: String = " ") -> String { return s1 + joiner + s2 } 如果在调用joiner函数的时候,设置了一个string的默认值,那么这个值可以与另外一个字符串拼接在一起: join(string: "hello", toString: "world", withJoiner: "-") // returns "hello-world” 但是如果调用joiner的时候没有设置默认值,系统将会使用一个空格代替: join(string: "hello", toString: "world") // returns "hello world” External Names for Parameters with Default Values (默认值的扩展名) 在多少情况下,对参数使用默认值的时候都需要提供扩展名.这样可以明确参数的意义,尤其是在调用函数的时候. 为了方便,在你没有提供扩展名的时候,Swift提供了自动扩展名给定义的默认参数.这个自动扩展名与局部参数名相同,就好像你写了一个#号在局部变量的前面. 下面是join函数的的一个版本,它没有提供参数的扩展名,但提供了默认值: func join(s1: String, s2: String, joiner: String = " ") -> String { return s1 + joiner + s2 } 在这种情况下,Swift自动的提供了一个扩展的参数名给有默认值的参数.因此在调用函数的时候,必须提供扩展名的参数,这使得函数的参数更加清楚和没有歧义: join("hello", "world", joiner: "-") // returns "hello-world” Variadic Parameters (可变参数) 一个可变参数可以接收某种类型的0个或者多个值.在调用函数的时候,你可以使用可变参数来指定传递给函数的参数个数.可变参数的写法是在参数类型名的前面插入三个点字符 (...). 传递给可变参数的值可以在函数体内作为类似数组的类型使用.例如: func arithmeticMean(numbers: Double...) -> Double { var total: Double = 0 for number in numbers { total += number } return total / Double(numbers.count) } arithmeticMean(1, 2, 3, 4, 5) // returns 3.0, which is the arithmetic mean of these five numbers arithmeticMean(3, 8, 19) // returns 10.0, which is the arithmetic mean of these three numbers 注意: 一个函数最多只能有一个可变参数,并且必须在参数列表的最后面,这是为了避免在调用多个参数的函数的时候有歧义. 如果你定义函数的有一个或者多个参数有默认值,也可以使用可变参数,只是要将它放在所有默认参数的最后面. Constant and Variable Parameters (参数常量和参数变量) 函数参数默认是常量,在函数内部试图修改一个函数的参数值都会产生一个编译错误.这就意味着你不能修改函数的参数. 然而,有时候一个参数值的可变拷贝对函数是非常有用的,这样你可以避免在定义一个新的变了在函数体内部.参数变量可以像使用变量而不是常量的方式来处理,并给它复制一个参数 值的新拷贝. 定义参数变量是在参数名前面使用前缀的关键字:var func alignRight(var string: String, count: Int, pad: Character) -> String { let amountToPad = count - countElements(string) for _ in 1...amountToPad { string = pad + string } return string } let originalString = "hello" let paddedString = alignRight(originalString, 10, "-") // paddedString is equal to "-----hello" // originalString is still equal to "hello” 这个例子定义了一个叫做alignRight的新函数,它将输入的字符串进行右对齐,在这个例子里,字符串‘hello’被转换为’-----hello’. 函数alignRight定义了参数变量string,这意味着string是可变的局部变量,可以使用传递的字符串值进行初始化,也可以在函数体内进行修改使用. 这个函数一开始先计算出有多少个字符需要添加到string的左边来达到右对齐的效果.这个值被存储在局部常量amountToPad中,然后函数添加amountToPad个数量的短横线字符在 string的左边,最后返回结果. 注意: 可修改的参数变量作用范围不能超过函数的末尾,并且对于函数之外,它们是不可见的.参数变量的生命期只存在于函数的调用周期. //******待续...*******// |
请发表评论