//: Playground - noun: a place where people can play
import UIKit
//使用 func 声明一个函数。调用函数使用他的名字加上小括号中的参数列表。使用 -> 分隔参数的名字和返回值类型。
func greet(name: String,day: String) ->String {
return "Hello \(name),today is \(day)."
}
greet("Bob","Tuesday")
//使用元组(tuple)来返回多个值。
func getGasPrices() ->(Double, Double,170)">Double) {
return (3.4,4.5, 6.5,7.6)
}
getGasPrices()
//函数可以接受可变参数个数,集合到一个数组中。
func sumOf(numbers: Int...) ->Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
sumOf()
sumOf(100,120,10)
//编写一个函数计算其参数的平均值
func avgOf(numbers: Double...) -> Double {
var avg: Double = 0
var sum: in numbers {
sum += number
}
avg = sum / Double(numbers.count)
return avg
}
avgOf()
avgOf(34,67,216)"> 90)
//函数可以嵌套。内嵌函数可以访问其定义所在函数的变量。你可以使用内嵌函数来组织代码,避免函数过长和过于复杂。
func returnFifteen() -> 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(9)
func hasAnyMatches(list: [Int],condition: Bool) -> Bool {
for item in list {
if condition(item) {
return true
}
}
return false
}
func lessThanTen(number: Bool {
return number < 10
}
var numbers = [20,216)">17,216)"> 7,216)">12]
hasAnyMatches(numbers,lessThanTen)
//函数实际是闭包的特殊情况。你可以写一个闭包而无需名字,只需要放在大括号中即可。使用 in 把参数、返回值和函 数体分开。
numbers.map({
(number: Int in
let result = 3 * number
return result
})
numbers
//重写这个闭包,所有奇数返回0。
var result = number
if(number % 2 != 0) {
result = 0 * number
return result
}
return result
})
//写闭包时有多种选项。当一个闭包的类型是已知时,例如代表回调,你可以忽略其参数和返回值,或两者。单一语句的
//闭包可以直接返回值。
numbers.map({ number in 3 * number})
//你可以通过数字而不是名字来引用一个参数,这对于很短的闭包很有用。一个闭包传递其最后一个参数到函数作为返回 值。
sort(&numbers) { $0 > $1}
numbers
原文链接:https://www.f2er.com/swift/326783.html