探究Swift
主要参考自:The Swift Programming Language.
前言
要点
基本语法
- println(“hello, world”) 每行语句末尾不需要加分号
- 使用let 声明常量(只能赋值一次), var声明变量,声明时类型是可选的,如: let explicitDouble:Double = 70
值永远不会隐式转换,除非你显示进行:
12345let label = "a"let width = 9let labelWidth = label + String(width)orlet labelWidth2 = label + "\(width)"有些变量的值是可选的,一个可选的值可能是一个具体的值或者是nil, 表示值缺失。在
类型
后面加一个问号来标记这个变量的值是可选的:12var optionalString:String? = "hello"optionalString = nilfor, if, while 用法
12345678910111213141516171819202122232425262728let interestingNumbers = ["Prime":[2, 3, 4, 7],"Fibo": [1,1, 2, 3],"Square": [1, 3, 4, 5]]var largest = 0for (kind, numbers) in interestingNumbers{for number in numbers // 不用括号{if number > largest // 不用括号{largest = number}}}// while---------var n = 2while n < 100{n = n*2}等价于var n;for i in 2..100 // 或者 2...99 ,..创建的范围不包含上届, ...包含{n = n*2}switch里的 case值可以是任意类型的数据以及各种比较操作,不一定是整数以及测试相等。也不用加break。
123456789101112let vegetable = "red pepper"switch vegetable{case "celery":let vegetableComment = "Add some .."case "cucumber", "watercress"let vegetableComment = "That ..."case let x where x.hasSuffix("pepper"):let vegetableComment = "Is it ..."default:let vegetableComment = "Everything ..."}函数和闭包
1234567891011121314151617181920212223funct greet(name:String, day:String) -> String{return "Hello \(name), today is \(day)."}greet("Bob" "Tuesday")//使用元组返回多个值func getGasPrices() -> (Double, Double, Double){return (3,59,5.7)}getGasPrices()// 参数数量可变func sumOf(numbers: Int ...) -> Int{var sum = 0for number in numbers{sum += number}return sum}sumOf()sumOf(42, 597, 12)
函数是一等公民,因此函数可以作为另一个函数的返回值
函数也可以作为参数传入另一个函数
函数实际上是一种特殊的闭包,可以使用{}来创建一个匿名闭包, 使用in 来分割函数并返回类型
有很多种创建闭包的方法。如可以通过参数位置而不是参数名字来引用参数,当一个闭包作为最后一个参数传给一个函数的时候,它可以直接跟在括号后面:
- 对象和类