代码之家  ›  专栏  ›  技术社区  ›  john doe

Swift协议获取者和设置者

  •  0
  • john doe  · 技术社区  · 5 年前

    为什么Swift自动允许开发人员设置属性值,即使protocol只声明了getter而没有setter。检查以下代码:

    import Foundation
    
    protocol Pedometer {
        var pedometerAvailable: Bool { get } 
    }
    
    class MockPedometer: Pedometer {
        var pedometerAvailable: Bool = true // even though the Pedometer protocol is only getter I can still set ??
    }
    
    let mockPedometer = MockPedometer() 
    mockPedometer.pedometerAvailable = false // why I can set the value here 
    
    1 回复  |  直到 5 年前
        1
  •  3
  •   matt    5 年前

    为什么?

    必须 做,而不是领养者 去吧。一个 get 属性必须有getter,但没有说明它不能也有setter。

    get set 属性必须同时具有getter和setter;它 不能 只读,而 得到 财产 可以 是的。)

    其他 性质和功能;那太荒谬了。好吧,setter实际上是另一个函数。