函数与闭包func

 func

  使用 func 声明一个函数。

       调用函数使用他的名字加上小括号中的参数列表。使用 -> 分隔参数的名字和返回值类型。

 

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

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

  }

  greet("Bob", "Tuesday")

       

       返回:Hello Bob, today is Tuesday。


 
  使用元组(tuple)来返回多个值。
 
  func getGasPrices() -> (Double, Double, Double) {
  return (3.59, 3.69, 3.79)
  }
  getGasPrices()
 
  函数可以接受可变参数个数,收集到一个数组中。
 
  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
  } //by gashero
  returnFifteen()
 
  函数是第一类型的。

       这意味着函数可以返回另一个函数。

 
  func makeIncrementer() -> (Int -> Int) {
  func addOne(number: Int) -> Int {
  return 1 + number
  }
  return addOne
  }
  var increment = makeIncrementer()
  increment(7)
 
  一个函数可以接受其他函数作为参数。
 
  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)
 
  函数实际是闭包的特殊情况。

       你可以写一个闭包而无需名字,只需要放在大括号中即可。使用 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 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值