Swift5 高级运算符与枚举
1. 位运算符
var sixteen: UInt8 = 0b00010000
print(sixteen)
var result1 = sixteen & 0b00001111
var result2 = 0b00000111 & 0b00000001
var result3 = 0b00000111 | 0b00000000
var result4 = 0b00000001 | 0b00000010
var result5 = ~sixteen
var result6 = 0b00000111 ^ 0b00000000
var result7 = 0b00000111 ^ 0b00001111
var result8 = 0b00000111 << 1
var result9 = 0b00000111 >> 1
var result10: UInt8 = 0b00001000 << 5
var result11: UInt8 = 0b00010000 >> 5
2. 溢出运算符
var num: UInt8 = 255
var result12 = num &+ 1
result12 = result12 &- 1
result12 = result12 &* 2
3. 重载运算符
func +(param1: (Int, Int), param2: (Int, Int)) -> (Int, Int) {
return (param1.0 + param2.0, param1.1 + param2.1)
}
var tuple1: (Int, Int) = (1, 2)
var tuple2: (Int, Int) = (1, 2)
let tuple = tuple1 + tuple2
4. 自定义运算符
prefix operator ++
prefix func ++(param: Int) -> Int {
return param + 1
}
++1
infix operator **
func **(param1: Int, param2: Int) -> Int {
return param1 * param1 + param2 * param2
}
1 ** 2
postfix operator --
postfix func --(param: Int) -> Int {
return param - 1
}
1--
5. 枚举
enum Week: String {
case MON = "星期一", TUE = "星期二", WED = "星期三", THUR = "星期四", FRI = "星期五", SAT = "星期六", SUN = "星期日"
}
enum Number: UInt8 {
case 壹 = 1, 贰, 叁, 肆, 伍, 陆
}
print(Number.肆.rawValue)
var day = Week.MON
var numTwo = Number.init(rawValue: 2)
switch day {
case .MON:
print("monday", day.rawValue)
case .TUE:
print("tuesday")
case .WED:
print("wednesday")
case .THUR:
print("thursday")
case .FRI:
print("friday")
case .SAT:
print("saturday")
case .SUN:
print("sunday")
}
enum Direction {
case left(type: Int, text: String)
case right(type: Int, text: String)
}
var direction = Direction.left(type: 1, text: "左")
switch direction {
case let .left(type, text):
print("type: \(type),向\(text)")
case let .right(type, text):
print("type: \(type),向\(text)")
}