查看: 3528|回复: 0

[手机开发] Swift语言中与C/C++和Java不同的语法(五)

发表于 2018-2-21 08:00:04

这一节将会提到Swift中其他的关于函数的应用,这些内容包括有:

默认参数值和可变参数值、常量参数、返回函数类型和函数嵌套:

一、默认参数值和可变参数值

对默认参数值是指在函数的声明中就已经定义了参数的初值,比如:

  1. func sayHelloTo(name:String,greeting:String = “Hi”, punctuation:String = “!”){
  2. }
  3. 在调用的时候可以是:
  4. sayHelloTo(name:“PlayGround”, punctuation :“!!!”, greeting :“Hi”)
复制代码

因为对有默认参数的函数来说,有默认参数值的参数是可以调换顺序的,但是不建议这样使用。print函数就是有分割符和结束符初始值的函数。

对变长的参数类型的函数来说,

  1. func mean(numbers : Double ...)-> Double {
  2. for number in numbers {
  3. sum+=number
  4. }
  5. return sum/Double(numbers.count)
  6. }
  7. 调用可以是:
  8. mean(2)
  9. 也可以是
  10. mean(2,3,4,5,6)
复制代码

但是一个函数只可以有一个变长的参数。

二、常量参数

与Java和C/C++不同,Swift不可以在函数中改变参数的值,因为传入参数的值的类型声明是let,好的函数会尽量避免需要改变函数参数的值。

但是如果要改变参数的值,需要这样来声明:

  1. func toBinary(var num:Int)-> String {
  2. return num/2
  3. }
复制代码

将类型声明为var,

但是这样的改变只是在函数的内部改变,但是在函数的外面是不改变的,

这是因为这种方式是按值出传入的,不是引用传入,只是在函数的内部进行了copy

如果需要痛殴函数改变外部参数的值,需要添加inout

  1. func swapInt(inout a :Int, inout b : Int){
  2. (a,b) = (b,a)
  3. }<br>var x : Int = 1<br>var y : Int = 2<br>swapInt(&x,&b)
复制代码

三、返回函数类型

这个也很简单,返回的类型是函数就好了:

  1. func tire1 (weight : Int)-> Int {
  2. }
  3. func tire2 (weight : Int ) ->Int {
  4. }
  5. func choose (weight : Int) -> (Int) -> Int {
  6. return weight>10 ? tire1(weight) : tire2(weight)
  7. }
复制代码

四、函数的嵌套

  1. func feeByPrice(price : Int,weight:Int)->Int {
复制代码
  1.   func choose (weight : Int) -> (Int) -> Int {
  2.   return weight>10 ? tire1(weight) : tire2(weight)
  3.   }<br>return ...<br>}
复制代码
[code][/code]



回复

使用道具 举报