美文网首页
函数和闭包

函数和闭包

作者: cz3w | 来源:发表于2016-03-26 09:15 被阅读27次

//func 来声明一个函数,使用名字和参数来调用函数。使用 -> 来指定函数返回值的类型。

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

return "Hello \(name), today is \(day)."

}

greet("Bob", day:"Tuesday")

//使用元组来让一个函数返回多个值。该元组的元素可以用名称或数字来表示

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)

}

let statistics = calculateStatistics([5, 3, 100, 3, 9])

print(statistics.sum)

print(statistics.1)

//函数可以带有可变个数的参数,这些参数在函数内表现为数组的形式

func sumOf(numbers: Int...) -> Int {

var sum = 0

for number in numbers {

sum += number

}

return sum }

sumOf()

sumOf(42, 597, 12)

//被嵌套的函数可以访问外侧函数的变量,你可以使用嵌套函数来重构一个太长或者太复杂的函数。

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 increment = makeIncrementer()

increment(7)

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

//list 中有小于 10 的数值 返回 true ,否则返回false

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, 12, 34 ,1]

hasAnyMatches(numbers,  condition: lessThanTen)

//使用 {} 来创建 一个匿名闭包。使用 in 将参数和返回值类型声明与闭包函数体进行分离

numbers.map({

(number: Int) -> Int in

let result = 3 * number

return result

})

//如果一个闭包的类型已知,比如作为一个回调函数,你可以忽略参数的类型

//和返回值。单个语句闭包会把它语句的值当做结果返回。

let mappedNumbers = numbers.map({ number in 3 * number })

print(mappedNumbers)

//可以通过参数位置而不是参数名字来引用参数——这个方法在非常短的闭包中非常有用。当一个闭包作

//最后一个参数传给一个函数的时候,它可以直接跟在括号后面。当一个闭包是传给函数的唯一参数,

//你可以完全忽括号。

let sortedNumbers = numbers.sort { $0 < $1 }

print(sortedNumbers)

相关文章

  • rust 闭包与同步

    rust 闭包与同步 rust 闭包 rust闭包中主要包括两个部分,闭包参数和闭包环境变量。闭包函数和函数参数使...

  • 函数对象和闭包

    函数对象和闭包 一) 函数对象 示例: 二)函数嵌套 三)闭包函数

  • 面试题(day-2)

    1 ,什么是闭包?闭包有什么好处?使用闭包要注意什么? 闭包:函数嵌套函数,内部函数可以引用外部函数的参数和变量,...

  • Swift-闭包

    闭包的特点:一个函数有权访问另外一个函数内的变量和参数 闭包—匿名函数 结尾闭包 衍生 内容捕获 闭包和函数是引用类型

  • 闭包函数

    闭包函数 闭包,又称闭包函数或者闭合函数,其实和嵌套函数类似,不同之处在于,闭包中外部函数返回的不是一个具体的值,...

  • php之闭包函数(Closure)

    php闭包函数(Closure) JS闭包 js和php闭包使用和区别

  • 变量

    闭包: 什么是闭包? 函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾机构回收; 用闭包做...

  • 变量和函数、闭包

    闭包: 什么是闭包? 函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾机构回收; 用闭包存...

  • 13_day变量和函数、闭包

    闭包: 什么是闭包? 函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾机构回收; 用闭包做...

  • js 变量 闭包

    闭包: 什么是闭包? 函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾机构回收; 用闭包做...

网友评论

      本文标题:函数和闭包

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