Object-C--->Swift之(七)丰富的函数形参功能-阿里云开发者社区

开发者社区> xinxinitblog> 正文

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

注意要用到&符号

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
函数计算支持应用中心功能
函数计算通过应用中心为您提供开箱即用、二次开发的应用模板,以应用的视角管理、部署、监控您的应用。Serverless 应用开发从未如此简单。
494 0
函数计算 4-5 月功能发布
函数计算4-5月发布了访问用户 VPC 资源,HTTP 触发器,环境变量等重磅功能,以及在控制台、工具链、SDK 上一系列改进,快来看看吧!
1255 0
Swift中关于集合计算的几种函数记录(intersect、symmetricDifference、union、subtract)
Swift中关于集合计算的几种函数记录(intersect、symmetricDifference、union、subtract) 很久之前用过一次,后来就忘了。。。扎心,现在记录一下 PS:这几种函数其实不限于swift内的,在JavaScript、python、DB等其他语言,应该也有类似用法,这里我只简单讲了在swift内的用法。
1411 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
3964 0
PostgreSQL sharding : citus 系列3 - 窗口函数调用限制 与 破解之法(套用gpdb执行树,分步执行)
标签 PostgreSQL , citus , 窗口函数 背景 窗口函数是分析场景常用的,目前(citus 7.5)仅支持两种场景使用window函数, 1、partition by 必须是分布键。
828 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
5705 0
+关注
xinxinitblog
C++和iOS码农
178
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载