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

SWfit学习2:函数和闭包

发布时间:2020-12-15 07:20:36 所属栏目:百科 来源:网络整理
导读:函数 Swift 使用 func 关键字声明函数: func greet(name: String , day : String ) - String { return "Hello (name),today is (day)." }greet( "hello" , day : "World" ) 通过元组(Tuple)返回多个值: func getPrices() - ( Double , Double , Double ){

函数

Swift 使用 func 关键字声明函数:

func greet(name: String,day: String) -> String {
        return "Hello (name),today is (day)."
        }

greet("hello",day: "World")

通过元组(Tuple)返回多个值:

func getPrices() -> (Double,Double,Double){
            return (3.89,4.98,0.87)
    }

getPrices()

支持带有变长参数的函数:

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

        return sum
    }
 let sum =  sumOf()
 let sum1 =  sumOf(12,23,45,14,87)
 println("sum =(sum),sum1 = (sum1)")

运行结果:sum =0,sum1 = 226

函数也可以嵌套函数:

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

        add()
        return y
    }

returnFifteen()

?
作为头等对象,函数既可以作为返回值,也可以作为参数传递:

func makeincrementer() -> (Int -> Int){
        func addOne(number:Int) -> Int{
            return 1 + number
        }

        return addOne
    }

var incernebt = makeincrementer()
let summery = incernebt(7)
func hasAnyMatches(list:Int[],condition:Int -> Bool) -> Bool{
        for item in list{
        if condition(item){
        return true
         }
        }

        return false
    }

func lessonThanTen(number:Int) -> Bool{
            return number < 10
  }
var numbers = [20,17,9,19]let haoMatch = hasAnyMatches(numbers,condition: lessonThanTen)

闭包
闭包是功能性自包含模块,可以在代码中被传递和使用。 Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其他一些编程语言中的 lambdas 比较相似。本质来说,函数是特殊的闭包,Swift 中可以利用{}声明匿名闭包:
闭包表达式语法有如下一般形式:
{ (parameters) -> returnType in
statements
}
函数和返回值类型都写在大括号内,而不是大括号外。

闭包的函数体部分由关键字 in 引入。 该关键字表示闭包的参数和返回值类型定义已经完成,闭包函数体即将开始。

numbers.map({
      (number: Int) -> Int in
     let result = 3 * number
     return result
     })

当闭包的类型已知时,可以使用下面的简化写法:

numbers.map({ number in 3 * number })

此外还可以通过参数的位置来使用参数,当函数最后一个参数是闭包时,可以使用下面的语法:

sort([1,5,3,12,2]) { $0 > $1 }

(编辑:李大同)

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

    推荐文章
      热点阅读