Предположим, у меня есть следующий код:
public class A {}
public class B : A {}
public class Foo {
public func bar() -> A {
print("secret hidden method")
return A()
}
public func bar() -> B {
print("easily accessible method")
return B()
}
}
Проблема в том, что попытка их вызвать приводит к двусмысленности. Вы можете вызвать bar() -> B
с Foo().bar() as B
, но все Foo().bar()
, Foo().bar() as A
и let a: A = Foo().bar()
приводят к ошибке Ambiguous use of 'bar()'
компилятора.
Итог: Как мне позвонить bar() -> A
? Есть ли хитрый синтаксис для него? Нужно ли отражение? Достаточно ли отражения ?