欢迎!请参阅《关于》页面以获取更多关于如何使用本服务的信息。
在可能的情况下,最好使用参数数量来引导方法重载歧义消除,以减少对提示的需求。例如
(map ^[int] Integer/toString [0 1 2 3])
在这里,编译器因为缺少类型推断而需要提示。然而
(^[] String/toLowerCase "Foo")
似乎这个案例应该能够在没有提示的情况下根据arity进行消除歧义。
这是一种设计选择 - 在使用完全限定构造器、实例方法和静态方法符号调用或值位置时,要求您通过if param-tags指定确切的参数数量/重载方式。不会进行推断,不会发生反射,如果方法歧义仍然存在,则会抛出编译异常。
一个特殊情况是调用位置中的静态方法,因为这是最早允许有条件方法的唯一预存在位置,并且以前曾使用过推断。为了保持向后兼容性,这种情况下仍然会使用推断(如果没有提供参数标记)。