3
public class Hello {
public static void test(int i) {
System.out.println("int");
}
public static void test(long l) {
System.out.println("long");
}
}
user=> (def foo 1)
#'user/foo
user=> (type foo)
java.lang.Long
user=> (Hello/test 1)
long
nil
user=> (Hello/test foo)
int
nil
user=> (Integer. 1)
1
user=> (Integer. foo)
1
user=> (Short. 1)
IllegalArgumentException No matching ctor found for class java.lang.Short clojure.lang.Reflector.invokeConstructor (Reflector.java:183)
我找不出规则。整数类型转换如何在java互操作中工作?
为什么'(你好/测试富)'选择INT超载?为什么'(Short。1)'在'(Integer。1)'成功时失败?没有所有规则的官方文件?我应该阅读编译器的源代码吗? – alice
阅读Rich Hickey的这篇文章,链接自我的其他答案:https://groups.google.com/forum/#!msg/clojure/7-hARL5c1lI/ntnnOweEGfUJ – noahlz
关于文档:http://dev.clojure.org /display/doc/Documentation+for+1.3+Numerics - 请注意,行为可能取决于您的Clojure版本。 – noahlz