加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift语法基础:3 - Swift的函数和闭包

发布时间:2020-12-14 02:20:14 所属栏目:百科 来源:网络整理
导读:在Swift中,一样是存在函数和闭包的,现在让我们来看看Swift的函数和闭包: 1.使用func来声明函数 func person (name: String,age:String) - String { return ( "The name is (name),age is (age)" )}println(person( "xiaoming" , "20" )) // 打印出来的结果

在Swift中,一样是存在函数和闭包的,现在让我们来看看Swift的函数和闭包:


1.使用func来声明函数

func person(name: String,age:String) -> String {
        return ("The name is (name),age is (age)")
}

println(person("xiaoming","20"))
// 打印出来的结果:The name is xiaoming,age is 20

2.声明一个多元组的函数

func home() -> (Double,Double,Double) {
    return (10.0,20.0,30.0)
}
println(home())
// 打印出来的结果: (10.0,20.0,30.0)

3.在声明函数的时候,我们也可以这么去声明

func sumOf(numbers:Int...) -> Int {
    var sum = 0
    for number in numbers {
        sum += number
    }
    return sum
}
println(sumOf(1,2,3)) // 打印出来的结果: 6

PS: “Int…”是数组的意思.


4.函数的嵌套

func returnFifeen() -> Int{
    var i = 10
    func add() {
        i++
    }
    add()
    return i
}
println(returnFifeen())
// 打印出来的结果: 11

利用这个特性,函数与函数的嵌套使用同样是可以返回的:

func makeIncrementer() ->(Int -> Int) {
    func addOne(number:Int) -> Int {
        return 1 + number
    }
    return addOne
}
var increment = makeIncrementer()
println(increment(7))
// 打印出来的结果: 8

也可以当做另一个参数传入:

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]
println(hasAnyMatches(numbers,lessThanTen))
// 打印出来的结果: true

5.闭包的声明以及简单运用

var names = ["Chris","Alex","Ewa","Barry","Daniella"]
func backwards(s1: String,s2: String) -> Bool {
        return s1 > s2
}
var reversed = sorted(names,backwards)
println(reversed)
// 打印出来的结果: [Ewa,Daniella,Chris,Barry,Alex]

PS: 在Sort是默认没有返回值的,而Sorted的返回值是倒序排列.

这里有个官方的例子:

func hasAnyMatches1(list:[Int],condition:Int -> Bool) -> Bool {
    for item in list {
        if condition(item){
            return true
        }
    }
    return false
}
func lessThanTen1(number: Int) -> Bool {
    return number < 10
}
var numbers1 = [20,9,12]
println(hasAnyMatches1(numbers1,lessThanTen1))
// 打印出来的结果: true
numbers1.map({
    (number: Int) -> Int in
    let result = 3 * number
    return result
})
let mappedNumbers = numbers1.map({
    number in 3 * number
})
println(mappedNumbers) // 打印出来的结果: [60,27,21,36]
let sortedNumbers = sorted(numbers1) {$0 > $1}
println(sortedNumbers)
// 打印出来的结果: [20,12,7]

PS: Sorted默认的排序是从小到大,但是在sorted()后面加上{ 0> 1}这句代码,那么就会根据我们缩写的判断来进行排序.


好了,这次我们就讲到这里,下次我们继续

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读