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

注意要用到&符号

相关文章
|
存储 JSON 关系型数据库
深入了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数
在MySQL数据库中,JSON格式的数据处理已经变得越来越常见。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它可以用来存储和表示结构化的数据。MySQL提供了一些功能强大的JSON函数,其中两个关键的函数是JSON_ARRAYAGG和JSON_OBJECT。本文将深入探讨这两个函数的用途、语法和示例,以帮助您更好地理解它们的功能和用法。
998 1
深入了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数
|
4月前
|
JavaScript 前端开发 开发者
讲述Vue框架中用于对象响应式变化的Object.defineProperty函数。
综上所述,Vue.js通过 `Object.defineProperty()`提供了强大的响应式能力,使得状态管理变得简洁高效。这种能力是Vue.js受到广大开发者青睐的重要原因之一。尽管Vue 3.x使用Proxy替代了该方法,但对于Vue 2.x及其之前版本,`Object.defineProperty()`是理解Vue.js内部工作机制不可或缺的一部分。
183 27
|
存储 PHP 数据安全/隐私保护
spl_object_hash() 函数
spl_object_hash() 函数
|
存储 关系型数据库 MySQL
|
存储 JavaScript 前端开发
【JavaScript】<面向对象Object>函数方法&对象创建&原型对象&作用域解析
【1月更文挑战第17天】【JavaScript】<面向对象Object>函数方法&对象创建&原型对象&作用域解析
|
JSON 数据格式
Hive----get_json_object() 函数
get_json_object() 函数
3685 0
|
存储 索引 Python
Python函数是所谓的第一类对象(First-Class Object)是什么鬼?
之前写过一篇关于装饰器的文章,虽然写得还算不错,但是也有不少同学表示没看懂,我大概分析了其中的原因,主要问题是他们不理解函数,因为Python中的函数不同于其它语言。
257 0
|
JavaScript 前端开发
Function(函数)与Object(对象)的关系
Function(函数)与Object(对象)的关系
259 0
|
Java Python
Python面向对象编程04:重写object通用函数
正式的Python专栏第39篇,同学站住,别错过这个从0开始的文章!
368 0
Python面向对象编程04:重写object通用函数

热门文章

最新文章

相关课程

更多
下一篇
oss云网关配置