【发布时间】:2020-02-06 01:47:24
【问题描述】:
假设我有以下代码:
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()
}
}
问题是尝试调用它们会导致歧义。您可以使用Foo().bar() as B 调用bar() -> B,但所有Foo().bar()、Foo().bar() as A 和let a: A = Foo().bar() 都会产生Ambiguous use of 'bar()' 编译器错误。
底线:我如何调用bar() -> A? 它有一些棘手的语法吗?是否需要反思?反射足够吗?
【问题讨论】:
标签: swift overloading overload-resolution