为什么这段代码不起作用?
protocol ExampleProtocol {
var simpleDescription: String { get }
mutating func adjust()
}
extension Int: ExampleProtocol {
var simpleDescription: String {
return "The number \(self)"
}
mutating func adjust() {
self += 42
}
}
var x:Int = 7
let y:Int = x.adjust()
Run Code Online (Sandbox Code Playgroud)
这是我在XCODE上得到的

有没有办法让adjust()返回Int而不改变协议中的定义?
是的,您可以给出调整返回值.定义它以在协议和类中返回Int,然后让它在变异方法中返回:
protocol ExampleProtocol {
var simpleDescription: String { get }
mutating func adjust() -> Int
}
extension Int: ExampleProtocol {
var simpleDescription: String {
return "The number \(self)"
}
mutating func adjust() -> Int {
self += 42
return self
}
}
var x:Int = 7
let y:Int = x.adjust() //49
Run Code Online (Sandbox Code Playgroud)
因为 adjust() 函数不返回值(它只是改变其实例的值),您可以通过以下命令实现:
var x:Int = 7
x.adjust() //adjust x self value
let y:Int = x //assigne x value to y
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
2519 次 |
| 最近记录: |