У меня есть 2 типа, A
и B
, которые реализуют одни и те же методы и имеют одинаковые свойства для них.Я определил расширение для извлечения значения в подчиненном свойстве для каждого из A
и B
.Я хочу знать, есть ли способ уменьшить эти 2 расширения до 1 метода.Представьте себе, что существует еще много типов, таких как A
и B
, поэтому проблема с дублированием кода становится намного хуже.
Обновление: A
и B
создаются вместе со многими другими, подобными им.Первоначальный план состоит в том, чтобы вообще не писать расширения для A
или 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
}
}