自学Swift(二)

在swift 中 使用关键字 func 来声明一个函数,使用 函数名+(参数列表)来调用函数 用-> type 来表示返回类型

func greet(name: String, day: String) -> String {

    return "Hello \(name), today is \(day)."
}
greet("Bob", "Tuesday")

这个例子声明了一个返回 String类型 的函数 并且需要 传入 两个string 类型的参数

函数也可以传入数组 处理并指定返回数组

func calculateStatistics(scores: [Int]) -> (min: Int, max: Int, sum: Int) {
    var min = scores[0]
    var max = scores[0]
    var sum = 0

    for score in scores {
        if score > max {
            max = score
        } else if score < min {
            min = score
        }
        sum += score
    }

    return (min, max, sum)
}

当你需要传入多个参数的时候也可以用 … 来表示

func sumOf(numbers: Int...) -> Int {
    var sum = 0
    for number in numbers {
        sum += number
    }
    return sum
}
sumOf()
sumOf(42, 597, 12)

注意 以上两个方法传参方面的区别,一个传的是数组 一个传的是多个int !

switf中函数是允许嵌套的 不过嵌套的函数只能作用于其父函数范围内

func returnFifteen() -> Int {
    var y = 10
    func add() {
        y += 5
    }
    add()
    return y
}
returnFifteen()

并且 你可以把函数看做一个基本类型 在一个func中返回另一个func

func makeIncrementer() -> (Int -> Int) {
    func addOne(number: Int) -> Int {
        return 1 + number
    }
    return addOne
}
var increment = makeIncrementer()
increment(7)

我们来分析下上面这个代码 在makeIncrementer 函数里声明了一另一个addOne函数 并且 返回这个函数
然后声明一个变量 increment 并且赋值makeIncrementer 函数 这个时候变量其实就是指向了makeIncrementer 的返回 也就是addOne 就能像用方法一样把变量当成函数

既然func 可以作为返回 那是不是也能当做参数呢?
YES!

func hasAnyMatches(list: [Int], condition: Int -> Bool) -> Bool {
    for item in list {
        if condition(item) {
            return true
        }
    }
    return false
}
func lessThanTen(number: Int) -> Bool {
    return number < 10
}
var numbers = [20, 19, 7, 12]
hasAnyMatches(numbers, lessThanTen)

官方的这个例子给我们演示了怎么把一个func作为参数传进另一个func

通过这几个官方的例子可以看出 Swift 函数定义的扩展性相当的强大 时尚酷炫屌炸天 !

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值