原创文章,欢迎转载。转载请注明:关东升的博客

 

函数的语法格式如下:

func 函数名(参数列表) -> 返回值类型 {

语句组

return 返回值

}

关键字是func。

多个参数列表之间可以用逗号(,)分隔,也可以没有参数。

使用箭头“->”指示返回值类型。返回值有单个值和多个值。如果函数没有返回值,则“-> 返回值类型”部分可以省略。

如果函数有返回值,就需要在函数体最后使用return语句;如果没有返回值,则函数体中可以省略return语句。

函数定义示例代码如下:

func rectangleArea(width:Double, height:Double) -> Double {

    let area = width * height

    return area   

} 

print("320x480的长方形的面积:\(rectangleArea(320, height: 480))") 

传递参数

介绍几种不同形式的参数。

  1. 使用外部参数名

为每个参数提供一个可以在函数外部使用的名称,称为外部参数名,修改rectangleArea函数的定义如下:

func rectangleArea(W width:Double, H height:Double) -> Double {

let area = width * height

return area

}

在局部参数名之前给一个“外部参数名”,用空格分隔。定义代码中的W和H就是外部参数名。调用代码如下:

print("320x480的长方形的面积:\(rectangleArea(W:320, H:480))")

如果我们提供了外部参数名,那么在函数调用时,必须使用外部参数名,所以W和H不能省略。

  1. 省略外部参数名

Swift 2.0提供省略外部参数名可能,在定义函数时,使用下划线(_)表示外部参数名,示例代码如下:

func rectangleArea(width:Double, _ height:Double) -> Double {

    let area = width * height

    return area

}

这样函数在调用时就可以省略外部参数名,代码如下:

print("320x480的长方形的面积:\(rectangleArea(320, 480))")

在定义函数时第一个参数不需要使用下划线(_),默认第一个参数名是省略的,其他参数名要想省略则需要使用下划线(_)符号。

  1. 参数默认值

在定义函数的时候可以为参数设置一个默认值,当调用函数的时候可以忽略该参数。看下面的一个示例:

func makecoffee(type : String = "卡布奇诺") -> String {

return "制作一杯\(type)咖啡。"

}

在调用的时候,如果调用者没有传递参数,则使用默认值。调用代码如下:

let coffee1 = makecoffee("拿铁")

let coffee2 = makecoffee()  

最后输出结果如下:

制作一杯拿铁咖啡。

制作一杯卡布奇诺咖啡。

  1. 可变参数

Swift中函数的参数个数可以变化,它可以接受不确定数量的输入类型参数,它们具有相同的类型。我们可以通过在参数类型名后面加入(...)的方式来指示这是可变参数。

下面看一个示例:

func sum(numbers: Double...) -> Double {

    var total: Double = 

    for number in numbers {

        total += number

    }

    return total

}

下面是两次调用sum函数代码:

sum(100.0, 20, 30)

sum(30, 80)

可以看到每次传递参数的个数是不同的。

欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
                          ​
更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php

《从零开始学Swift》学习笔记(Day 19)——函数参数传递的更多相关文章

  1. swift学习笔记之—自定义函数的规则说明

    原文出自:www.hangge.com  转载请保留原文链接:http://www.hangge.com/blog/cache/detail_517.html 1,无返回值的函数 func test( ...

  2. 关东升的《从零开始学Swift》即将出版

    大家好: 苹果2015WWDC大会发布了Swift2.0,它较之前的版本Swift1.x有很大的变化,所以我即将出版<从零开始学Swift> <从零开始学Swift>将在< ...

  3. 关东升的《从零开始学Swift》3月9日已经上架

    大家一直期盼的<从零开始学Swift>于3月9日已经上架,它是关东升老师历时8个月的呕心沥血所编著,全书600多页,此本书基于Swift 2.x,通过大量案例全面介绍苹果平台的应用开发.全 ...

  4. Swift学习笔记(一)搭配环境以及代码运行成功

    原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...

  5. Effective STL 学习笔记:19 ~ 20

    Effective STL 学习笔记:19 ~ 20 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  6. matlab学习笔记13_3创建函数句柄

    一起来学matlab-matlab学习笔记13函数 13_3 创建函数句柄 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://ww2.mathworks.cn/help ...

  7. matlab学习笔记13_2匿名函数

    一起来学matlab-matlab学习笔记13函数 13_2 匿名函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://ww2.mathworks.cn/help/m ...

  8. Python学习笔记之常用函数及说明

    Python学习笔记之常用函数及说明 俗话说"好记性不如烂笔头",老祖宗们几千年总结出来的东西还是有些道理的,所以,常用的东西也要记下来,不记不知道,一记吓一跳,乖乖,函数咋这么多 ...

  9. python之感知器-从零开始学深度学习

    感知器-从零开始学深度学习 未来将是人工智能和大数据的时代,是各行各业使用人工智能在云上处理大数据的时代,深度学习将是新时代的一大利器,在此我将从零开始记录深度学习的学习历程. 我希望在学习过程中做到 ...

  10. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

随机推荐

  1. wine 魔兽争霸

    连接参见http://linux-wiki.cn/wiki/%E7%94%A8Wine%E8%BF%90%E8%A1%8C%E9%AD%94%E5%85%BD%E4%BA%89%E9%9C%B8III ...

  2. C/C++获取当前系统时间

    个人觉得第二种还是比较实用的,而且也是最常用的~ 不过当计算算法耗时的时候,不要忘记second,不能只要用Milliseconds来减,不然后出现负值,若是算法耗时太长就得用minutes啦.再不然 ...

  3. VBA【遍历每个工作表并将工作表表名赋予B2单元格】

    方法一:  存在缺陷:选中所有单元格,批量生成公式时候,每次需要点击进入工作表点击单元格--进入编辑状态,然后公式才会生效 使用公式如下: =,) 附件下载地址:点击下载 方法二: 使用宏编程进行复制 ...

  4. (五)Oracle学习笔记—— 视图

    1. 视图简介 视图是虚表,没有具体物理数据,是通过实体表的一种计算映射逻辑.主要就是为了方便和数据安全. 2. 视图作用 简化数据操作:视图可以简化用户处理数据的方式. 着重于特定数据:不必要的数据 ...

  5. 远程调用——hessian使用入门

    Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单.快捷.采用的是二进制RPC协议,因为采用的是二进制协 ...

  6. linux-c 调试 gdb

    GDB(GNU Debugger) gcc -g –o testarg testarg.c //可执行文件中带上调试信息,用于后续的gdb调试 gdb testarg l; list //显示源程序 ...

  7. [原创]FreeSWITCH实现多人来电思路

    [原创]FreeSWITCH实现多人来电思路 场景介绍 该篇文章主要用于介绍如何使用FreeSWITCH实现通讯系统中常见的多人来电功能. 具体场景如下: A与B正在通话中,此时C拨打A/B,Free ...

  8. C6455 CSL_EMIF详解

    C6455 CSL_EMIF详解 原网址http://www.61ic.com/Article/C6000/C64X/201303/47507.html C6455CSL详解 和DSP6455的EMI ...

  9. 字符串函数---strcmp()与strncmp()具体解释及实现

    一.strcmp()与strncmp() strcmp():strcmp(s1,s2);            比較两个字符串.        strncmp():strncmp(s1,s2);   ...

  10. java - day14 - InnerClass

    内部类使用 package com.InnerClass; public class Mama { String name; Baby baby; Mama(String name){ this.na ...