Swift:返回类型不明确的调用重载方法
假设我有以下代码:Swift:返回类型不明确的调用重载方法,swift,overloading,overload-resolution,Swift,Overloading,Overload Resolution,假设我有以下代码: 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("ea
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()作为B
调用bar()->B
,但所有Foo().bar()
,Foo().bar()作为A
,以及let A:A=Foo().bar()
都会产生使用“bar()”的不明确的编译器错误
一句话:如何调用bar()->A
?是否有一些棘手的语法?有必要反思吗?反射足够吗?编译器需要能够确定要执行的bar()
的哪个变体。可以明确说明要执行的func
的类型,并利用curry访问给定实例的正确实现
让foo=foo()
设a:()->a=Foo.bar(Foo)
设b:()->b=Foo.bar(Foo)
()
b()
上述代码将打印:
secret hidden method
easily accessible method
好极了!新的秘密巫术来解决我的问题!:P谢谢!