写swift一时爽,一直写一直爽~~~
模式匹配
switt中强大的switch case 结合枚举和元祖会有意想不到的作用
枚举:
// 定义个枚举
enum School {
case Student(name: String, age: Int, address: String?)
case Teacher(name: String, age: Int, address: String?)
}
// 取一个枚举值
let karl = School.Student(name: "karl", age: 27, address: "AH")
// 匹配一下
switch student {
case .Student(let name, let age, let address):
print("\(name) -- \(age) -- \(address)")
default:
break
}
通配符
这个有意思,和可选链有点混
let student = School.Student(name: "karl", age: 27, address: nil)
let teacher = School.Teacher(name: "wang", age: 50, address: "AH")
// _ :这个值完全不重要,可有可无,是什么我都不关心。
switch student {
case let .Teacher(name, _, _):
print("name: \(name)")
default: break
}
// _? :这个值我虽然不用,但是它不能为空
switch student {
case let .Student(name, age, _?):
print("name: \(name)")
default: break
}
元祖
吆西,看完上面的概念,来看看元祖‘
// 不管age, 取出name
let people = (age: 27, name: "karl")
switch people {
case (_, let name):
print(name)
default:
break
}
// where 语句
switch student {
case let .Student(_, age, _) where age > 30:
print("\(age)")
default:
break
}
other
// 来个range看看,爽不爽
let number = 10
switch number {
case 0 ... 7:
print("0 ... 7")
case 10 ..< 20:
print("10 ..< 20")
default:
break
}