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

注意要用到&符号

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

相关文章
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
array_unshift() 函数在数组开头插入一个或多个元素。被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样 array_unshift()定义和用法 array_unshift() 函数在数组开头插入一个或多个元素。
687 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9489 0
函数计算支持应用中心功能
函数计算通过应用中心为您提供开箱即用、二次开发的应用模板,以应用的视角管理、部署、监控您的应用。Serverless 应用开发从未如此简单。
542 0
Swift函数
<div> <p><span style="font-size:14px;">函数定义</span></p> <p><span style="font-size:14px;"> </span></p> <p><span style="font-size:14px;">使用 func 定义一个函数。调用函数使用他的名字加 上小括号中的参数列表。使用 -&gt; 分隔参数的名字和 返回值类型。</
857 0
Swift中关于集合计算的几种函数记录(intersect、symmetricDifference、union、subtract)
Swift中关于集合计算的几种函数记录(intersect、symmetricDifference、union、subtract) 很久之前用过一次,后来就忘了。。。扎心,现在记录一下 PS:这几种函数其实不限于swift内的,在JavaScript、python、DB等其他语言,应该也有类似用法,这里我只简单讲了在swift内的用法。
1465 0
PostgreSQL sharding : citus 系列3 - 窗口函数调用限制 与 破解之法(套用gpdb执行树,分步执行)
标签 PostgreSQL , citus , 窗口函数 背景 窗口函数是分析场景常用的,目前(citus 7.5)仅支持两种场景使用window函数, 1、partition by 必须是分布键。
873 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13172 0
SQL2000系统表、存储过程、函数的功能介绍及应用
转自:http://blog.csdn.net/zlp321002/article/details/480925 ----系统表---------------------------------------------------------------------------------------------------- 虽然使用系统存储过程、系统函数与信息架构视图已经可以为我们提供了相当丰富的元数据信息,但是对于某些特殊的元数据信息,我们仍然需要直接对系统表进行查询。
654 0
+关注
xinxinitblog
C++和iOS码农
178
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载