zoukankan      html  css  js  c++  java
  • Swift语言中与C/C++和Java不同的语法(五)

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

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

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

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

    func sayHelloTo(name:String,greeting:String = “Hi”, punctuation:String = “!”){
    }
    在调用的时候可以是:
    sayHelloTo(name:“PlayGround”, punctuation :“!!!”, greeting :“Hi”)

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

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

    func mean(numbers : Double ...)-> Double {
        for number in numbers {
            sum+=number
        }
        return sum/Double(numbers.count)
    }
    
    调用可以是:
    mean(2)
    也可以是
    mean(23456

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

    二、常量参数

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

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

    func toBinary(var num:Int)-> String {
        return num/2
    }

    将类型声明为var,

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

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

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

    func swapInt(inout a :Int, inout b : Int){
        (a,b) = (b,a)
    }
    var x : Int = 1
    var y : Int = 2
    swapInt(&x,&b)

    三、返回函数类型

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

    func tire1 (weight : Int)-> Int {
    }
    func tire2 (weight : Int ) ->Int {
    }
    func choose (weight : Int) -> (Int) -> Int {
        return weight>10 ? tire1(weight) : tire2(weight)
    }

    四、函数的嵌套

    func feeByPrice(price : Int,weight:Int)->Int {
      func choose (weight : Int) -> (Int) -> Int {
          return weight>10 ? tire1(weight) : tire2(weight)
      }
    return ...
    }
    
    
  • 相关阅读:
    Python 存储引擎 数据类型 主键
    Python 数据库
    Python 线程池进程池 异步回调 协程 IO模型
    Python GIL锁 死锁 递归锁 event事件 信号量
    Python 进程间通信 线程
    Python 计算机发展史 多道技术 进程 守护进程 孤儿和僵尸进程 互斥锁
    Python 异常及处理 文件上传事例 UDP socketserver模块
    Python socket 粘包问题 报头
    Django基础,Day7
    Django基础,Day6
  • 原文地址:https://www.cnblogs.com/winterfells/p/7442089.html
Copyright © 2011-2022 走看看