Swift学习
用typealias来给变量起一个别名
typealias Feet = Int
typealias Feet = Int
var distance: Feet = 100
print不换行
for x in 0...10{
print("\(x) ", terminator: "")
}
输出:
0 1 2 3 4 5 6 7 8 9 10
Swift是类型安全的,在编译时如果类型检查错误会编译不过
定义变量不需要明确指定类型
如果你没有显式指定类型,Swift 会使用类型推断(type inference)来选择合适的类型
输出变量
var name = "菜鸟教程"
var site = "http://www.runoob.com"
print("\(name)的官网地址为:\(site)")
Swift 可选(Optionals)类型
可选类型表示“那有一个值,为x,或者那儿没有值”
声明一个可选类型的变量,以下两种方式等价:
var optionalInteger: Int?
var optionalInteger: Optional<Int>
Optional 是一个含有两种情况的枚举,None 和 Some(T),可选类型类似于Objective-C中指针的nil值,但是nil只对类(class)有用,而可选类型对所有的类型都可用,并且更安全。
关于Optional的理解,有篇比较好的文章:
使用var定义变量,使用let定义常量
swift3 中已经取消了++、--
区间运算符
1...5 区间值为 1, 2, 3, 4 和 5
1..< 5 区间值为 1, 2, 3, 和 4
fallthrough语句
Swift fallthrough 语句让 case 之后的语句会按顺序继续运行,且不论条件是否满足都会执行。
var index = 10
switch index {
case 100 :
print( "index 的值为 100")
case 10,15 :
print( "index 的值为 10 或 15")
case 5 :
print( "index 的值为 5")
default :
print( "默认 case")
}
// 结果:index 的值为 10 或 15
如果使用fallthrough
var index = 10
switch index {
case 100 :
print( "index 的值为 100")
fallthrough
case 10,15 :
print( "index 的值为 10 或 15")
fallthrough
case 5 :
print( "index 的值为 5")
default :
print( "默认 case")
}
// 执行结果:
// index 的值为 10 或 15
// index 的值为 5
字符串
字符串长度使用 String.characters.count 属性来计算
var varA = "www.runoob.com"
print( "\(varA), 长度为 \(varA.characters.count)" )
// 输出:www.runoob.com, 长度为 14
你可以使用 == 来比较两个字符串是否相等
字符Character
Swift 中不能创建空的 Character(字符) 类型变量或常量:
// Swift 中以下赋值会报错
let char1: Character = ""
var char2: Character = ""
print("char1 的值为 \(char1)")
print("char2 的值为 \(char2)")
数组
你可以使用 append() 方法或者赋值运算符 += 在数组末尾添加元素
var someInts = [Int]()
someInts.append(20)
someInts.append(30)
someInts += [40]
var someVar = someInts[0]
print( "第一个元素的值 \(someVar)" )
print( "第二个元素的值 \(someInts[1])" )
print( "第三个元素的值 \(someInts[2])" )
// 输出结果
// 第一个元素的值 20
// 第二个元素的值 30
// 第三个元素的值 40
如果我们同时需要每个数据项的值和索引值,可以使用 String 的 enumerate() 方法来进行数组遍历。实例如下:
var someStrs = [String]()
someStrs.append("Apple")
someStrs.append("Amazon")
someStrs.append("Runoob")
someStrs += ["Google"]
for (index, item) in someStrs.enumerated() {
print("在 index = \(index) 位置上的值为 \(item)")
}
// 输出结果:
// 在 index = 0 位置上的值为 Apple
// 在 index = 1 位置上的值为 Amazon
// 在 index = 2 位置上的值为 Runoob
// 在 index = 3 位置上的值为 Google
我们可以使用加法操作符(+)来合并两种已存在的相同类型数组。新数组的数据类型会从两个数组的数据类型中推断出来:
var intsC = intsA + intsB
我们可以使用 count 属性来计算数组元素个数
使用函数类型
在 Swift 中,使用函数类型就像使用其他类型一样
func sum(a: Int, b: Int) -> Int {
return a + b
}
// 定义一个叫做 addition 的变量,参数与返回值类型均是 Int ,并让这个新变量指向 sum 函数:
var addition: (Int, Int) -> Int = sum
print("输出结果: \(addition(40, 89))")
// 输出结果: 129
闭包
Swift闭包有以下优化:
- 根据上下文推断参数和返回值类型
- 从单行表达式闭包中隐式返回(也就是闭包体只有一行代码,可以省略return)
- 可以使用简化参数名,如$0, $1(从0开始,表示第i个参数...)
- 提供了尾随闭包语法(Trailing closure syntax)
对数组进行排序:
let names = ["AT", "AE", "D", "S", "BE"]
var reversed = names.sorted(by: >)
print(reversed)