Uni*_*orn 2 protocols initialization swift
例子:
struct FanSpeed {
var fanSpeed: Int {
willSet{
previousFanSpeed = fanSpeed
}
}
var previousFanSpeed: Int
init(fanSpeed: Int) {
self.fanSpeed = fanSpeed
self.previousFanSpeed = fanSpeed
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够以这种方式初始化 FanSpeed:
let fs:FanSpeed = 4
Run Code Online (Sandbox Code Playgroud)
我知道有一个我可以遵守的协议来支持这一点,但现在不记得了。谢谢阅读!
您正在寻找 ExpressibleByIntegerLiteral 协议。
struct FanSpeed: ExpressibleByIntegerLiteral {
typealias IntegerLiteralType = Int
init(integerLiteral value: Int) {
self.init(fanSpeed: value)
}
var fanSpeed: Int {
willSet{
previousFanSpeed = fanSpeed
}
}
var previousFanSpeed: Int
init(fanSpeed: Int) {
self.fanSpeed = fanSpeed
self.previousFanSpeed = fanSpeed
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用整数值初始化 FanSpeed 类型的变量。
let fanSpeed = FanSpeed(fanSpeed: 3)
let fanSpeed: FanSpeed = 3
let fanSpeed = 3 as FanSpeed
let fanSpeed: [FanSpeed] = [1, 2, 5]
let fanSpeed = [1, 2, 5] as [FanSpeed]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |