swift 2.0 语法 函数
//: Playground - noun: a place where people can play
import UIKit
/*:
函数
* 格式
func 函数名称(形参名称1: 形参类型, ...) -> 返回值类型
{
// 逻辑代码
}
* 没有参数没有返回值
* 没有参数有返回值
* 有参数没有返回值
* 有参数有返回值
*/
// 没有参数没有返回值
// 如果函数的返回值是Void, 那么可以简写为()
// 如果函数的返回值是(), 那么可以直接不写
func say() ->Void
{
print("say hello")
}
say()
func say1() ->()
{
print("say hello")
}
say1()
// 开发中请写下面这种
func say2()
{
print("say hello")
}
say2()
// 没有参数有返回值
func getNumber() -> Int
{
return 998
}
print(getNumber())
func getMinAndMax() ->(Int, Int)
{
return (1, 998)
}
let (min, max) = getMinAndMax()
print(min)
print(max)
// 有参数没有返回值
// 注意: Swift2.0之前, 是不会将第二个参数开始后面所有的参数名称作为标签名称
// 从Swift2.0开始, Swift才将第二个参数开始后面所有的参数名称作为标签名称
// 在Swift2.0之前, 如果想实现这个功能, 那么必须手动添加外部参数
func sum(num1: Int, num2: Int)
{
print(num1 + num2)
}
sum(10, num2: 20)
/*:
外部参数和内部参数
* 内部参数: 默认情况下, 所有的形参都是内部参数
* 外部参数: Swift2.0之前, 可以通过在形参前面加上名称的方式来制定外部参数, Swift2.0之后, 默认情况下从第二个形参开始, 形参既是内部参数又是外部参数
如何指定外部参数:
* 在形参前面以空格隔开, 加上一个名称即可
* 例如: value2 num2: Int
外部 内部 数据
如何忽略外部参数:
* 在形参前面以空格隔开, 加上_
* _代表忽略
* 例如: _ num2: Int
忽略 内部 数据
*/
func sum1(num1: Int,_ num2: Int)
{
print(num1 + num2)
}
sum1(10, 20)
/*:
常量形参和变量形参
* 默认情况下所有的形参都是常量形参, 也就是说不能在函数中修改形参的值
* 如果想在函数中修改形参的值, 那么必须把形参变为变量形参
* 只需要在变量名称前面加上 var即可
* 注意: 在函数中修改形参的值, 是不会影响到外部实参的值
*/
func swap(var num1: Int, var num2: Int)
{
let temp = num1
num1 = num2
num2 = temp
}
let a = 10
let b = 20
print("a = \(a), b = \(b)")
swap(a, num2: b)
print("a = \(a), b = \(b)")
/*:
输入输出参数
* 如果想在函数中修改形参的值, 并且同时修改实参的值, 那么就必须将形参变为输入输出形参
* 只需要在形参名称前面加上inout即可
*/
func swap2(inout num1: Int, inout num2: Int)
{
let temp = num1
num1 = num2
num2 = temp
}
var n = 10
var m = 20
print("n = \(n), m = \(m)")
swap2(&n, num2: &m)
print("n = \(n), m = \(m)")
/*:
可变参数
* 当一个函数不确定接收多少个参数时, 就可以使用可变参数
* 举例: 计算两个数的和 --> 需求变更 --> 计算三个数的和 --> 需求又变更 --> 计算10个数的和
注意点:
* 可变参数必须指定数据类型
* 在其它语言中有可能可变参数只能放到形参列表的最后面, 而Swift中可以放到任意位置
*/
// 既然任意个整数的和
func sum3(numbers: Int...)
{
// print(numbers)
var sum = 0
for number in numbers
{
sum += number
}
print(sum)
}
sum3(10, 20)
func sum4(numbers: Int..., value: Int)
{
// print(numbers)
var sum = value
for number in numbers
{
sum += number
}
print(sum)
}
sum4(10, 20, value: 999)
/*:
默认值
* 可以给形参指定默认值, 如果一个形参指定了默认值, 那么调用的时候就可以不传递该参数的值, 如果没有传递那么就使用默认值
注意点
* 在其他语言中可能默认值只能写在形参列表的最后面, 但是Swift中可以写在任意位置
*/
func joinString(str1: String = "lnj", str2: String = "❤️", str3: String = "520")
{
print(str1 + str2 + str3)
}
//joinString("xmg", str2: "❤️", str3: "520")
//joinString("xmg", str2: "心", str3: "520")
//joinString("xmg", str3: "520")
//joinString("lnj")
joinString()
// 有参数有返回值
func sum5(num1: Int, num2: Int) -> Int
{
return num1 + num2
}
print(sum5(20, num2: 20))
swift 2.0 语法 函数的更多相关文章
- swift 2.0语法 元组
import UIKit /*: 元祖 * 可以将多个值保存在一起 * 格式: (数值1, 数值2, 数值3) * 特点: 元祖可以保存不同数据类型的值 * 用途: 在C/OC中如果一个函数想返回多个 ...
- swift 2.0 语法 字符串
//: Playground - noun: a place where people can play import UIKit /*: 字符串 * OC中的字符串是一个对象, Swift中的字符串 ...
- swift 2.0 语法 循环
//: Playground - noun: a place where people can play import UIKit /*: for循环 * 基本用法和OC一致 * 条件表达式必须是bo ...
- swift 2.0 语法 可选类型
import UIKit /*: 可选类型(可以有值, 也可以没有值) * 在OC中我们可以给一个对象类型变量赋值为nil或者一个对象, 而在Swift中如果想给一个变量赋值为nil那么必须明确指定为 ...
- swift 2.0 语法 分支
import UIKit // 注意: Swift中可以不写;号, 但是有一定的前提条件, 一行只有一句代码 // 如果一行有多句代码, 那么;还是必须写 // 注意: Swift变态的地方 ...
- swift 2.0 语法 常量变量
import UIKit /*: 常量变量 * 常量: let * 变量: var 完整格式: * 修饰符(let/var) 常量/变量名称: 数据类型 */ let number: Int var ...
- swift 2.0 语法 数组
import UIKit /*: 数组 * 格式 var arr:[Int] = [数值1, 数值2, 数值3] * 不可变数组 let == NSArray * 可变数组 var */ l ...
- swift 2.0 语法 字典
//: Playground - noun: a place where people can play import UIKit /*: 字典 * 和OC的区别 * 1. {} 替换为 [] * 2 ...
- Swift 2.0基本语法
内容包括:01变量&常量 02分支 03循环 04字符串 05数组 06字典 07函数 01变量&常量 //: Playground - noun: a place where peo ...
随机推荐
- python 模块-easygui.buttonbox
2018-03-0315:43:11 ): Yes_or_No = easygui.buttonbox("是否良品?", choices=['Yes', 'No', '退出']) ...
- IDEA 提示Cannot resolve symbol
将Springboot项目,构建为多个模块的时候,idea的有些类中报错Cannot resolve symbol 解决: 1.File->Invalidate Caches/Restart 清 ...
- 对比hive和mysql查询汇总
由于底层的处理机制大不相同,hive和mysql在查询上还是有较大差异的! 单个表的select操作 最简单的查询 ,字段2 frome 表名 where 字段 [not]in(元素1,元素2): 例 ...
- codeforces_300C_组合数_快速幂
C. Beautiful Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- jmeter插件之PerfMon
PerfMon是jmeter监控系统资源的一款插件,可以用来监控系统的CPU/内存/IO等性能指标. 一.要准备好的插件:JMeterPlugins-Standard-1.4.0(pwd:cjqd)或 ...
- CAD梦想看图6.0安卓版 20181022更新
下载地址: http://www.mxdraw.com/ndetail_10109.html 1. 保存上次的文件浏览位置和绘制颜色 2. 调整工具条按钮位置和文字 3. 增加测量距离和面积时的捕捉功 ...
- 00Cascading Style Sheet
Cascading Style Sheet CSS(Cascading Style Sheet)即层叠样式表,简称样式表.要理解层叠样式表的概念先要理解样式的概念.样式就是对网页中的 元素(字体.段落 ...
- Linux常用命令——帮助命令
1.帮助命令:man man 命令 获取指定命令的帮助 [dmtsai@study ~]$ man date DATE (1) User Commands DATE(1) #注意这个(1),代表的是m ...
- rem2
html{font-size:50px;}body{font-size:24px;}@media screen and (min-width:320px){ html{font-size:21.333 ...
- Java中对象流使用的一个注意事项
再写jsp的实验作业的时候,需要用到java中对象流,但是碰到了之前没有遇到过的情况,改bug改到崩溃!!记录下来供大家分享 如果要用对象流去读取一个文件,一定要先判断这个文件的内容是否为空,如果为空 ...