《从零开始学Swift》学习笔记(Day 19)——函数参数传递
原创文章,欢迎转载。转载请注明:关东升的博客
函数的语法格式如下:
func 函数名(参数列表) -> 返回值类型 {
语句组
return 返回值
}
关键字是func。
多个参数列表之间可以用逗号(,)分隔,也可以没有参数。
使用箭头“->”指示返回值类型。返回值有单个值和多个值。如果函数没有返回值,则“-> 返回值类型”部分可以省略。
如果函数有返回值,就需要在函数体最后使用return语句;如果没有返回值,则函数体中可以省略return语句。
函数定义示例代码如下:
func rectangleArea(width:Double, height:Double) -> Double {
let area = width * height
return area
}
print("320x480的长方形的面积:\(rectangleArea(320, height: 480))")
传递参数
介绍几种不同形式的参数。
- 使用外部参数名
为每个参数提供一个可以在函数外部使用的名称,称为外部参数名,修改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不能省略。
- 省略外部参数名
Swift 2.0提供省略外部参数名可能,在定义函数时,使用下划线(_)表示外部参数名,示例代码如下:
func rectangleArea(width:Double, _ height:Double) -> Double {
let area = width * height
return area
}
这样函数在调用时就可以省略外部参数名,代码如下:
print("320x480的长方形的面积:\(rectangleArea(320, 480))")
在定义函数时第一个参数不需要使用下划线(_),默认第一个参数名是省略的,其他参数名要想省略则需要使用下划线(_)符号。
- 参数默认值
在定义函数的时候可以为参数设置一个默认值,当调用函数的时候可以忽略该参数。看下面的一个示例:
func makecoffee(type : String = "卡布奇诺") -> String {
return "制作一杯\(type)咖啡。"
}
在调用的时候,如果调用者没有传递参数,则使用默认值。调用代码如下:
let coffee1 = makecoffee("拿铁")
let coffee2 = makecoffee()
最后输出结果如下:
制作一杯拿铁咖啡。
制作一杯卡布奇诺咖啡。
- 可变参数
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)——函数参数传递的更多相关文章
- swift学习笔记之—自定义函数的规则说明
原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/cache/detail_517.html 1,无返回值的函数 func test( ...
- 关东升的《从零开始学Swift》即将出版
大家好: 苹果2015WWDC大会发布了Swift2.0,它较之前的版本Swift1.x有很大的变化,所以我即将出版<从零开始学Swift> <从零开始学Swift>将在< ...
- 关东升的《从零开始学Swift》3月9日已经上架
大家一直期盼的<从零开始学Swift>于3月9日已经上架,它是关东升老师历时8个月的呕心沥血所编著,全书600多页,此本书基于Swift 2.x,通过大量案例全面介绍苹果平台的应用开发.全 ...
- Swift学习笔记(一)搭配环境以及代码运行成功
原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...
- Effective STL 学习笔记:19 ~ 20
Effective STL 学习笔记:19 ~ 20 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- matlab学习笔记13_3创建函数句柄
一起来学matlab-matlab学习笔记13函数 13_3 创建函数句柄 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://ww2.mathworks.cn/help ...
- matlab学习笔记13_2匿名函数
一起来学matlab-matlab学习笔记13函数 13_2 匿名函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://ww2.mathworks.cn/help/m ...
- Python学习笔记之常用函数及说明
Python学习笔记之常用函数及说明 俗话说"好记性不如烂笔头",老祖宗们几千年总结出来的东西还是有些道理的,所以,常用的东西也要记下来,不记不知道,一记吓一跳,乖乖,函数咋这么多 ...
- python之感知器-从零开始学深度学习
感知器-从零开始学深度学习 未来将是人工智能和大数据的时代,是各行各业使用人工智能在云上处理大数据的时代,深度学习将是新时代的一大利器,在此我将从零开始记录深度学习的学习历程. 我希望在学习过程中做到 ...
- 【swift学习笔记】二.页面转跳数据回传
上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...
随机推荐
- 利用forever在Linux上实现Node.js项目自启动
在一台计算机上手动跑Node项目简单,node xx.js就搞定了,想让Node项目后台执行,尽管不能直接用node命令搞定,可是在安装了forever这个包以后.还是非常轻松的.只是要是在远程ser ...
- ActiveMQ简述
概述 ActiveMQ是Apache所提供的一个开源的消息系统,全然採用Java来实现.因此.它能非常好地支持J2EE提出的JMS(Java Message Service,即Java消息服务)规范. ...
- LeetCode——Anagrams
Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...
- jQuery unbind() 方法
jQuery 中的 unbind() 方法是 bind() 方法的反向操作,从每一个匹配的元素中删除绑定的事件. 语法结构: unbind([type][, data]); type是事件类型,dat ...
- SVN学习(三)——在Eclipse 中安装和使用SVN客户端插件
0 基本概念了解 0.1 SVN的工作原理:采取客户端/服务器模式——在服务器的版本库中保存项目文件的各个版本,所有参与协同开发的程序员在自己本地电脑上保存一个工作副本.SVN支持程序员将本地副本更新 ...
- oc block 遍历数组及字典
原遍历数组NSArray * lines = ...for (NSString * line in lines) { // ...}for (int i = 0; i < lines.count ...
- partial(类型)(C# 参考)
通过分部类型可以定义要拆分到多个文件中的类.结构或接口. 如下: 在 File1.cs 中: namespace PC { partial class A { ; void MethodA() { } ...
- PHP经常使用正則表達式汇总
1. 平时做站点常常要用正則表達式,以下是一些解说和样例,仅供大家參考和改动使用: 2. "^\d+$" //非负整数(正整数 + 0) 3. "^ ...
- 我的 Android 学习笔记-Okhttp 的使用(译)
okhttp 已经是非常流行的网络请求库了.网上介绍的文章非常之多,但感觉都不是特别系统.遂想到官方应该有介绍的文档,仔细寻找一番,果然.但可惜是英文的,于是就大致翻译了一下,权当做笔记了. 1.Ca ...
- c++ using Handle Class Pattern to accomplish implementation hiding
Reference material: Thinking In C++ 2nd eidition chapter 5 section "Handle classes" If the ...