我有 2 种类型,A
它们B
实现相同的方法并具有相同的属性。我已经定义了一个扩展来获取每个A
和的子属性中的值B
。我想知道是否有办法将这 2 个扩展减少到 1 个方法。想象一下有更多的类型A
,B
所以代码重复问题变得更糟。
更新:A
并B
与许多其他类似的人一起生成。最初的计划是完全避免为A
or编写扩展B
。我不知道这是否可能,但有人告诉我我可以为此使用 KeyPaths。属性名称必须不同。这是代码生成的副产品
struct A {
var something: Common
}
struct B {
var somethingElse: Common
}
struct Common {
var value1: String
var value2: String
}
extension A {
func valueFor(condition: Bool) -> String {
return condition ? self.something.value1 : self.something.value2
}
}
extension B {
func valueFor(condition: Bool) -> String {
return condition ? self.somethingElse.value1 : self.somethingElse.value2
}
}