kindly anyone helps to explain the output "1,2,0,0" when expected is "1,2,-1,3"
following code produce output of
[1, 2, -1, 3]
[1, 2, 0, 0]
test2.BaseStagingConfig().a = 0
test2.StagingConfig().a = 3
Code in playground:
protocol Config {
var a: Int { get }
}
extension Config {
var a: Int { return 0 }
}struct test1 {
class BaseConfig: Config {
var a: Int { return -1 }
}class BaseDevConfig: BaseConfig { override var a: Int { return 1 } } class DevConfig: BaseDevConfig { override var a: Int { return 2 } } class BaseStagingConfig: BaseConfig { } class StagingConfig: BaseStagingConfig { override var a: Int { return 3 } }
}
//current code : static dispatch?!?
struct test2 {
class BaseDevConfig: Config {
var a: Int { return 1 }
}
class DevConfig: BaseDevConfig {
override var a: Int { return 2 }
}
class BaseStagingConfig: Config {} class StagingConfig: BaseStagingConfig { var a: Int { return 3 } }
}
let configs1: [Config] = [test1.BaseDevConfig(),
test1.DevConfig(),
test1.BaseStagingConfig(),
test1.StagingConfig()]
print("(configs1.map { $0.a })")let configs2: [Config] = [
test2.BaseDevConfig(),
test2.DevConfig(),
test2.BaseStagingConfig(),
test2.StagingConfig()]
print("(configs2.map { $0.a })")
print("test2.BaseStagingConfig().a = (test2.BaseStagingConfig().a)")
print("test2.StagingConfig().a = (test2.StagingConfig().a)")