Swift入门 二
字符串
- OC 中的字符串是一个对象,Swift中的字符串是一个结构体
- OC 中的字符串是以\0结尾, Swift中的字符串不是以\0结尾
- Swift中的字符串比OC中的字符串性能好
- Swift中的字符串支持遍历
let str = "abc\0def" print(str)
遍历字符串
for c in str.characters { print(c) }
拼接字符串
var str2 = "gm" str2 += str str2
格式化
let name = "gm" let age = 30 let res = "name = \(name),age = \(age)" // 结果: name = gm, age = 30
日期
// 2015-01-03 14:05:06 let res2 = String(format: "%d-%02d-%02d %02d:%02d:%02d", arguments: [2015, 1, 3, 14, 5, 6])
字符串截取
let str = "gmm521" //Swift中的大部分数据类型, 都支持直接转换为OC中的数据类型 . 例如String --> NSString
let res = (str as NSString).substringWithRange(NSMakeRange(0, 3)) // 结果:gmm
函数
格式: func 函数名称(形参名称1: 形参类型, ...) -> 返回值类型
{
//逻辑代码
}
没有参数没有返回值
- 如果返回值为Void,那么可以简写为() 或者不写
func say() ->Void { print("hello world") } say() func say() ->() { print("hello world") }
func say() //推荐 { print("hello world") }
没有参数有返回值
func getNum() -> Int { return 10 } print(getNum()) func getTwoNum() -> (Int, Int) { return (1, 10) } let (min, max) = getTwoNum() print(min) print(max)
有参数没有返回值
func sum(num1: Int, num2: Int) { print(num1 + num2) } sum(10, num2: 20)
- 内部参数: 默认情况下,所有的形参都是内部参数
- 外部参数: swift2.0 之后,默认情况下从第二个形参开始,形参既是内部参数又是外部参数
- 如何指定外部参数 value2 num2: Int
- 如何忽略外部参数 _ num2: Int
常量形参和变量形参
- 默认情况下,所有的形参都是常量形参,也就是说不能在函数中修改形参的值
- 如果想在函数中修改形参的值,那么必须把形参变为变量形参
- 只需要在变量名称前面加上 var即可
- 在函数中修改形参的值,是不会影响到外部形参的值
for 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)") //a = 10 b = 20 swap(a, num2:b) print("a = \(a), b = \(b)") //a = 10 b = 20
输入输出参数
- 如果想在函数中修改形参的值,并且同时修改实参的值,那么就需要将形参变为输入输出形参
- 只需要在形参名称前面加上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)") // n = 10 m = 20 swap2(&n, num2: &m) print("n = \(n), m = \(m)") // n = 20 m = 10
可变参数
- 当一个函数不确定接收多少个参数时,就可以使用可变参数
- 可变参数必须指定数据类型
- 在其他语言中可能可变参数只能放到形参列表的最后面,而Swift中可以放到任意位置
func sum(numbers: Int...) { var sum = 0 for number in numbers { sum += number } print(sum) } sum(10,20) func sum4(numbers: Int..., value: Int) { var sum = value for number in numbers { sum += number } print(sum) } sum(10, 20, value: 30)
默认值
- 可以给形参指定默认值,如果一个形参指定了默认值,那么调用的时候就可以不传递该参数的值,如果没有传递那么就是用默认值
- 在其他语言中默认值只能写在形参列表的最后面,但swift中可以写在任意的位置
func joinString( str: String = "gm" ,str1: String = "@" ,str2: String) { let sum = str + str1 + str2 }
有参数有返回值
func sum(num1: Int, num2: Int) -> Int { return num1 + num2 } print(sum(20, num2: 20))