Swift2.2 学习笔记(十三) ___函数

定义和调用函数
每一个函数都有一个函数名,用来 述了函数执行的任务。要使用一个函数时,可使用它的名称进行“调用”,并通过它的输入值(称为实参–argument)来匹配函数的参数类型。一个函数的实参 (arguments)必须始终和函数形参(parameter)顺序一致。

//使用箭头->来指明函数的返回 类型(一个连字符后跟一个向右的箭头),后边跟着返回的类型名称。
func sayHello (personName: String) ->String {
//    let greeting = "Hello," + personName + "!"
//    return greeting
    return "Hello again," + personName + "!"
}
print(sayHello("Anna"))

无形参函数

func sayHelloWorld() -> String {
    return "hello,world"
}
print(sayHelloWorld())

函数的形参和返回值

//多输入形参,逗号分隔。
func halfOpenRangeLength (start:Int,end:Int) ->Int {
    return end - start
// 设置半开区间的开始和结束索引,用来计算在范围内有多少元素
}
print(halfOpenRangeLength(1, end: 10))    //9

//无返回值的函数
func sayGoodbye(personName:String) {
    print("Goodbye,\(personName)!")
}
sayGoodbye("Dave")

 //函数形参名

 func join(s1:String,s2:String,joiner:String) ->String {
    return s1 + joiner + s2
}

join("hello", s2: "world", joiner: ",")

可变参数
函数调用时,如果不确定参数的数量,通过在变量类型后面加(…)定义可变参数,一个函数最多可能有一个可变参数,切必须是函数表中最后的一个。

func arithmeticMean(numbers:Double...) ->Double {
    var total:Double = 0
    for number in numbers {
        total += number
    }
    return total / Double (numbers.count)
}
arithmeticMean(1,2,3,4,5)  //3.0
arithmeticMean(3,8,19) //10.0

输入输出参数
如果想要一个函数可以修改参数的值,并且这些修改在函数结束调用后仍然存在,那就可以定义为输入输出参数,在参数前面添加inout关键字,这个值被函数修改后被传出函数,并替换原来的值,同时,传入的只能是变量而不能是常量,当传入的参数作为作为输入输出参数时,需要在参数面前加 & 符号,表示这个值可以被修改

func swapTwoInts(inout a: Int, inout b: Int) {
    let temporaryA = a
    a = b
    b = temporaryA
}

var someInt = 3
var anotherInt = 107
swapTwoInts(&someInt, b: &anotherInt)
print("someInt is now \(someInt), and anotherInt is now \(anotherInt)")
// prints "someInt is now 107, and anotherInt is now 3"

函数类型
每个函数都有特定的函数类型,由参数类型和返回类型组成

func addTwoInts(a: Int, b: Int) -> Int {
    return a + b
}
func multiplyTwoInts(a: Int, b: Int) -> Int {
    return a * b
}
// 以上两个的函数类型是 (Int, Int) -> Int
func printHelloWorld() {
    print("hello, world")
}

这个函数类型是 () -> ()
在返回箭头 (->) 后写一个完整的函数类型,表示将函数类型作为另一个函数的返回类型

func stepForward(input: Int) -> Int {
    return input + 1
}
func stepBackward(input: Int) -> Int {
    return input - 1
}
func chooseStepFunction(backwards: Bool) -> (Int) -> Int {
    return backwards ? stepBackward : stepForward
}
var currentValue = 3
let moveNearerToZero = chooseStepFunction(currentValue > 0)
// moveNearerToZero now refers to the stepBackward() function

print("Counting to zero:")
// Counting to zero:
while currentValue != 0 {
    print("\(currentValue)... ")
    currentValue = moveNearerToZero(currentValue)
}
print("zero!")
// 3...
// 2...
// 1...
// zero!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值