Object-C--->Swift之(七)丰富的函数形参功能

简介: 前面我们介绍了函数的入门语法,今天就仔细学习下函数的形参功能经典款式 func addDouble(a:Float,b:Float)->Float { return a+b }这个函数最经典的样式,实现了两个数的相加的功能外部参数我们在实际项目开发中类似这样的函数给形参传值的时候因没有介绍性的语句会出现传参错误。

前面我们介绍了函数的入门语法,今天就仔细学习下函数的形参功能

经典款式

    func addDouble(a:Float,b:Float)->Float
    {
     return a+b
    }

这个函数最经典的样式,实现了两个数的相加的功能

外部参数

我们在实际项目开发中类似这样的函数给形参传值的时候因没有介绍性的语句会出现传参错误。于是Swift保留了Object-C的优秀传统,在函数声明中可以指定外部参数名,具体代码如下

  外部形参名 局部形参名:形参类型

func addDouble(first a:Float,second b:Float)->Float
 {
    print(a+b)
    return a+b;
}

调用传值的时候是这样的:

  addDouble(first: 10, second: 20)

这样带有解释性的外部参数名就更加方便程序员的编码安全和效率。

形参默认值

我们定义函数的时候还可以为函数传入形参默认值,这时候我们调用函数的时候既可以给形参传值也可以省略传值,直接用默认值。代码如下:

    [外部形参名] 局部形参名:形参类型=默认值

    func addDouble1(a:Float=20.0, b:Float=10.0)->Float
   {
        return a+b
   }
     addDouble1()
    addDouble1(30,b: 40)

个数可变的形参

SWift函数中参数个数也是可以变化的,我们可以通过在最后一个参数类型后面加入(…)的方式来指示可变参数。例如:

 func addNnumber(nNumber:Float...)->Float
{
    var results:Float=0
for number in nNumber
{
    results += number
    }
   return results
}

变量形参

Swift函数中默认的形参是常量的,所以我们不能够在函数内部重新改变形参的值,所以为了解决这个问题,我们可以在形参名称前面加上var关键字,这样就可以改变形参的值了。

func addDouble2(var a:Float=20.0,b:Float=10.0)->Float
{ 
    a=a+b
   return a+b
}

In-Out形参

函数依然和前面数组和字典一样是值传递,也就是说函数参数传入函数内部只是传入参数的副本,内部改变形参值,将不影响实参值的变化

为了解决这个问题,我们将引入一个新的语法In-Out参数,这个功能类似于C语言上的引用类型,如果C语言这方面有所遗忘,可以参考我的这篇博客 C、C++动态分配函数暨几种参数传递疑难解析

 func swap(inout a:Float,inout b:Float)
{
 let  temp = a
    a=b
    b=temp
}

    var a:Float = 10.0
    var b:Float = 20.0
    print("交换前:a的值\(a),b的值\(b)")
    swap(&a,b: &b)
    print("交换后:a的值\(a),b的值\(b)")

注意要用到&符号

相关文章
|
4月前
|
存储 Swift
Swift中,函数和闭包
Swift中,函数和闭包
33 1
|
Swift
Swift中文教程(四)--函数与闭包
原文:Swift中文教程(四)--函数与闭包 Function 函数   Swift使用func关键字来声明变量,函数通过函数名加小括号内的参数列表来调用。使用->来区分参数名和返回值的类型: 1 func greet(name: String, day: String) -> String { 2 return "Hello \(name), today is \(day).
694 0
|
Swift
Swift中文教程(四)--函数与闭包
Function 函数   Swift使用func关键字来声明函数,函数通过函数名加小括号内的参数列表来调用。使用->来区分参数名和返回值的类型: 1 func greet(name: String, day: String) -> String { 2 return "Hello \(name), today is \(day).
1005 0
|
3月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
91 2
|
2月前
|
监控 API Swift
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
196 2
|
3月前
|
监控 Swift iOS开发
局域网计算机监控软件中利用Swift构建iOS端的移动监控应用
在局域网计算机监控软件的开发中,构建iOS端的移动监控应用是一项关键任务。本文将介绍如何利用Swift语言实现这一目标,通过多个代码示例展示关键功能的实现。
225 1
|
3月前
|
安全 JavaScript 前端开发
IOS开发基础知识:介绍一下 Swift 和 Objective-C,它们之间有什么区别?
IOS开发基础知识:介绍一下 Swift 和 Objective-C,它们之间有什么区别?
65 0

相关课程

更多