在介绍Swift中的函数与方法之前,我们先看看objective-c中函数与方法的写法,以求两个数的和为例:
1. 函数写法
int sum(int a, int b) {
return a + b;
}- (int)sum:(int)a b:(int)b {
return a + b;
}func sum(a: Int, b: Int) -> Int {
return a + b;
}
一、方法的定义格式
func 方法名(参数名称: 参数类型, ....) -> 返回值类型 {
}
二、方法的几种形态
1. 没有返回值的方法
func test(num1: Int) -> Void{
}func test(num1: Int) -> (){
}func test(num1: Int){
}func test() -> Int{
return 0
}func find(id: Int) -> (name: String, age: Int) {
if id > 0 {
return ("Jack", 20)
} else {
return ("Rose", 18)
}
}
var person = find(2)
println("name=\(person.name)", age=\(person.age))func sumOf(numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
//sumOf() 结果为:0
//sumOf(1,2,3,4) 结果为:101. 外部参数名(在形式参数前面再定义一个名称,这样调用方法的时候就有名称提示了)
func test(number1 num1:Int,number2 num2:Int) -> Int{
return num1 + num2
}
test(number1: 3, number2: 5)
2. 提示名称与形式参数名称一致,在形式参数前面加上#
func test(#num1:Int, #num2:Int) -> Int{
return num1 + num2
}
test(num1: 3, num2: 6)3. 默认参数值(即方法中的某个参数有默认值)
func addStudent(name: String, age: Int = 20){
println("添加学生:name=\(name), age=\(age)")
}调用结果如下:
addStudent("Lifei") // 添加学生:name=Lifei, age=20
addStudent("Jack", age: 30) // 添加学生:name=Jack, age=30
4. Swift中默认的方法形式参数是常量参数,不能修改
func test(num1: Int){
}func test(let num1: Int){
}func append(var destStr: String, sourceStr: String, num: Int) -> String{
for _ in 0..<num{
destStr += sourceStr
}
return destStr
}
var result = append("Lifei", "@", 6)
5. 输入输出参数,用inout关键字修饰
func change(inout num1: Int){
num1 = 10
}
var a = 20
change(&a)
a其实,它的原理就是传递的变量的地址,而不是值。再举个例子,就是交换两个数的值。
func exchange(inout num1: Int,inout num2: Int){
var temp = num1;
num1 = num2;
num2 = temp;
}
var a = 10
var b = 20
exchange(&a, &b)Swift中的方法类型也是数据类型的一种,例如:
func test(num1:Int, num2:Int) -> Int{
return num1 + num2
}(Int, Int) -> Int
var fn:(Int, Int) -> Int = test fn(10,20)
func add(num1: Int,num2: Int) ->Int{
return num1 + num2
}
func minus(num1: Int,num2: Int) ->Int{
return num1 - num2
}
func divide(num1: Int,num2: Int) ->Int{
return num1 / num2
}
func calcResult(fn: (Int,Int)->Int, num1: Int, num2: Int) -> Int{
return fn(num1 , num2)
}
var addResult = calcResult(add, 10, 20)
var minusResult = calcResult(minus, 10, 20)
var divideResult = calcResult(divide, 100, 5)
方法做为类型使用举例2:
func goToWork(){
println("上班去")
}
func haveFun(){
println("休息一下")
}
func howToDo(day: Int) -> Void -> Void{
if(day == 6 || day == 7){
return haveFun
}else{
return goToWork
}
}
var fn = howToDo(1)
fn()版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/sinat_27706697/article/details/47035149