美文网首页
swift函数(一)

swift函数(一)

作者: 差不多先生__ | 来源:发表于2022-10-09 18:28 被阅读0次

swiftOC的函数天差地别,OC的方法类型与书写方式和调用方式都与swift不一样。

1. 函数的定义

swift里面,如果要声明一个方法,需要先写func,这里的func意思就是,我们要声明一个方法啦,swift给我们的方法定义如下

func <#name#>(<#parameters#>) -> <#return type#> {
    <#function body#>
}

* <#name#>:方法名
* <#parameters#>:参数名(入参)
* <#return type#>:返回参数
* <#function body#>:方法实现

下面我们举两个例子,分别是打印的方法和一个计算和的方法,打印的方法不需要返回值也不需要入参,计算和方法需要入参和返回值

/**
 打印方法
 */
func pr() {
    print("swift打印方法")
}

/**
 计算和的方法
 - Parameters:
 - v1: 传入参数v1
 - v2: 传入参数v2
 - Returns: 返回v1和v2的和
 */
func sum(v1:Int, v2:Int) -> Int {
    return v1 + v2;
}

//下面是方法调用
//调用打印方法
pr()
//调用计算方法
var num = sum(v1: 5, v2: 7)

上面的打印方法,我们其实是简写了,func pr()如果要写全其实应该是func pr() -> Void,还可以写成func pr() -> (),这三种写法其实是一样的。
包括在sum方法中,return v1 + v2可以省略这个return,省略的前提是函数的方法实现是一个单一的表达式,但是我不建议这么做,因为人看代码还得反应一下哈哈。

2.多返回值

swift里面实现多返回值,可以使用元组,很方便,例如下面这个例子,是获得一个半径,然后计算圆的直径、周长、面积,并调用方法打印相关的值

/**
 计算圆的直径、周长、面积
 - Parameter radius: 半径
 - Returns: 一个元组,包含了diameter直径,perimeter周长,extent面积
 */
func circular(radius:Float) -> (diameter:Float, perimeter:Float, extent:Float) {
    let dia = radius*2
    let per = 3.14 * 2 * radius
    let ext = 3.14 * (radius * radius)
    return (dia, per, ext)
}

//调用方法以及打印
let result = circular(radius: 5)
print(result.diameter)      //结果:10.0
print(result.perimeter)     //结果:31.400002
print(result.extent)        //结果:78.5

执行结果如下图


圆方法执行结果.png

3.默认参数

swift的参数可以设置为默认的,传参时如果没有传入新值,使用时将使用默认值,举个🌰

/**
 有默认值的汽车信息方法
 - Parameters:
 - brand: 汽车品牌
 - mode: 挡的方式,默认是自动挡
 - color: 车的颜色,默认是白色
 - Returns: 没有返回值
 */
func car(brand:String, mode:String = "自动挡", color:String = "白") -> () {
    print("这辆汽车是\(brand)牌子的,\(mode),\(color)色的,很酷。")
}

//调用
car(brand: "福田")
car(brand: "红旗", color: "黑")

结果如下图


方法默认参数调用结果.png

4.参数标签

有时候特别简单的方法,比如计算一个和,我们需要传入两个参数,但是参数标签显得有点长,或者有时候方法和参数连起来并不连贯,这时候我们可以省略参数名或者给参数名加个标签

/**
 参数省略标签
 - Parameters:
 - v1: 参数1
 - v2: 参数2
 - Returns: 乘积
 */
func multiplication(_ v1:Int, _ v2:Int) -> Int {
    v1 * v2
}

/**
 参数添加标签
 - Parameter time: 时间
 */
func goToWork(at time:String) {
    print("time is \(time)")
}

//调用
multiplication(3, 7)

goToWork(at: "09:00")

5.可变参数

可变参数实现的方式不止一种,这里主要说的是参数里面有...这种方式,不过这里我先写一个传入数组的,理论上来说数组其实就是一个可变参数,下面这个方法里面用到了类型转换,在swift里面,类型相同才能进行计算,还用到了之前章节的 for-in

/**
 计算和
 - Parameter numbers: 一个数组,元素是int
 - Returns: 返回一个double类型的数据
 */
func sum(numbers:Array<Int>) -> Double {
    var temSum:Double = 0
    for number in numbers {
        temSum += Double(number)
    }
    return temSum
}

//调用
let numbers : Array = [7, 88, 13, 101]
let result = sum(numbers: numbers)

进入正题,我不使用数组,但实现和上面一个效果的方法,使用可变参数,例

/**
 使用可变参数实现数字和
 - Parameter numbers: 可变参数,类型int
 - Returns: 返回一个double类型的数据
 */
func sum(numbers:Int...) -> Double {
    var temSum:Double = 0
    for number in numbers {
        temSum += Double(number)
    }
    return temSum
}

//调用
let result = sum(numbers: 1, 4, 5, 10, 99)

相关文章

网友评论

      本文标题:swift函数(一)

      本文链接:https://www.haomeiwen.com/subject/krugartx.html