Swift:函数与方法

Swift:函数与方法,第1张

概述在介绍Swift中的函数方法之前,我们先看看objective-c中函数与方法的写法,以求两个数的和为例: 1. 函数写法 int sum(int a, int b) { return a + b;} 2. 方法写法 - (int)sum:(int)a b:(int)b { return a + b;} 从上面可以看出,两者的写法还是有很大不同的。而到了Swift中,直接将两

在介绍Swift中的函数与方法之前,我们先看看objective-c中函数与方法的写法,以求两个数的和为例:

1. 函数写法

int sum(int a,int b) {    return a + b;}

2. 方法写法
- (int)sum:(int)a b:(int)b {    return a + b;}

从上面可以看出,两者的写法还是有很大不同的。而到了Swift中,直接将两者进行了统一,写法如下:
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){}

2. 没有形式参数的方法
func test() -> Int{    return 0}

3. 返回多个值的方法,即返回元组形式
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))

4. 可变参数列表(借鉴了C#中的params)
func sumOf(numbers: Int...) -> Int {    var sum = 0    for number in numbers {        sum += number    }        return sum}//sumOf()  		结果为:0//sumOf(1,2,3,4)	结果为:10

三、 形参的类型

1. 外部参数名(在形式参数前面再定义一个名称,这样调用方法的时候就有名称提示了)

func test(number1 num1:Int,number2 num2:Int) -> Int{    return num1 + num2}test(number1: 3,number2: 5)

注意到,在参数num1和num2前面分别添加了名称number1和number2,这样在调用方法test的时候,系统会自动提示你将要输入的参数的提示名称。


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)")}

从上面的例子可以看出,age这个形式参数有一个默认参数值20. 它的意思是,你调用方法的时候,如果传入age的值,则将覆盖掉20这个值;如果只传入name的值,则age的值就为20.

调用结果如下:

addStudent("lifei")        // 添加学生:name=lifei,age=20addStudent("Jack",age: 30)  // 添加学生:name=Jack,age=30

从上面的调用形式可以看出,默认参数值的参数是外部参数名的形式,因为它出现了age这个提示语。


4. Swift中默认的方法形式参数是常量参数,不能修改

func test(num1: Int){}

相当于
func test(let num1: Int){}

如果想要参数是变量参数,需手动在形式参数名称加上var关键字,例如
func append(var destStr: String,sourceStr: String,num: Int) -> String{    for _ in 0..<num{        destStr += sourceStr    }    return destStr}var result = append("lifei","@",6)

在变量destStr前面加了var修饰,这样在方法内部就可以使用destStr进行运算等 *** 作了。


5. 输入输出参数,用inout关键字修饰

func change(inout num1: Int){    num1 = 10}var a = 20change(&a)a
其实,它的原理就是传递的变量的地址,而不是值。 再举个例子,就是交换两个数的值。
func exchange(inout num1: Int,inout num2: Int){    var temp = num1;    num1 = num2;    num2 = temp;}var a = 10var b = 20exchange(&a,&b)

四、方法类型

Swift中的方法类型也是数据类型的一种,例如:

func test(num1:Int,num2:Int) -> Int{    return num1 + num2}

这个方法的类型就是
(Int,Int) -> Int

可以利用方法类型来定义变量(fn这个变量的类型就是test的方法类型)
var fn:(Int,Int) -> Int = testfn(10,20)

方法做为类型使用举例1:
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,20)var divIDeResult = calcResult(divIDe,100,5)

可以看出,方法calcResult中的一个参数的类型就是(Int,Int) -> Int,然后在调用的时候,就非常的方便了。


方法做为类型使用举例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()
总结

以上是内存溢出为你收集整理的Swift:函数与方法全部内容,希望文章能够帮你解决Swift:函数与方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1086284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存