return "Hello \(name), today is \(day)."
}
greet("Bob", "Tuesday")
println(greet("Bob", “Tuesday"))
执行结果:Hello Bob, today is Tuesday.
name: String 形式定义变量及类型 ()内用逗号分隔参数,->后跟函数返回类型
///
使用tuple(元组)返回多个值:
func getGasPrices() -> (Double, Double, Double) {
return (3.59, 3.69, 3.79)
}
println(getGasPrices())
结果是 (3.59, 3.69, 3.79)
(这个可以用在哪里??)
函数可以接受可变参数个个数,就是可以接受不确定个数的参数,并放在数组中进行运算:
func sumOf(numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
println(sumOf(1, 2, 3))
结果是6
练习:编写函数求平均值:
func sumOf(numbers: Int...) -> Int {
var sum = 0 ,i=0
for number in numbers {
i++
sum+=number
}
return sum/i
}
println(sumOf(4, 8, 3))
可以在函数体里定义和调用函数
func returnFifteen() -> Int {
var y = 10
func add() { //定义内嵌的函数
y += 5
}
add() //执行add()函数
return y
}
println(returnFifteen())
执行结果 15
//函数可以返回另一个函数:
func makeIncrementer() -> (Int -> Int) {
func addOne(number: Int) -> Int { //构造这个函数
return 1 + number
}
return addOne //返回这个函数
}
var increment = makeIncrementer()
println(increment(7))
执行结果 8
//函数可以使用另一个函数作为参数
//若有一个数字符合小于10这个条件,则返回true
func hasAnyMatches(list: Int[], condition: Int -> Bool) -> Bool {
for item in list {
if condition(item) {
return true
}
}
return false
}
func lessThanTen(number: Int) -> Bool {
println("iii")
return number < 10
}
var numbers = [20, 19, 7, 12]
println(hasAnyMatches(numbers, lessThanTen))
Functions are actually a special case of closures. You can write a closure without a name by surrounding code with braces ({}). Use in to separate the arguments and return type from the body.
函数可以理解为是闭包的一种特殊形式。你可以写一个没名字的闭包,放入{}中即可。使用in从闭包中分离参数、返回类型。
var numbers = [20, 19, 7, 12]
numbers.map({
(number: Int) -> Int in
let result = 3 * number
println(result)
return result;
})
结果:60 57 21 36
等价代码:
numbers.map({number in
3*number})
重写一个闭包来对所有奇数返回0。
var numbers = [20, 19, 7, 12]
numbers.map({
(number: Int) -> Int in
var result = number
if (!((number%2)==0))
{
result=0
}
println(result)
return result;
})
返回结果:20 0 0 12
//函数嵌套->函数指针
func chooseFC(back:Bool)->(Int)->Int
{
func bigMore(input:Int)->Int {return input+1 }
func smallMore(input:Int)->Int {return input-1}
return back ? bigMore : smallMore
}
var x = 4
let condition=chooseFC(x<0)
while x != 0
{
x = condition(x)
println("\(x)")
}