我正在编写客户端/服务器测试,但遇到了一些意想不到的事情。在以下代码中,Socket
无法推断构造函数的端口参数:
(ns second-try.test.client
(:import [java.net Socket]))
(def port 5555)
(defn -main []
; "Cannot disambiguate overloads of Socket"
(let [sock (Socket. "127.0.0.1" port)]))
第一个参数的类型应该很明显,因为我传递的是文字。我认为端口的类型也很明显,因为它只是文字;尽管有一个隐藏在def
.
但由于某种原因,它无法确定port
. def
我可以通过在, 或参数前面添加注释来解决它,但为什么这是必要的?类型是什么不应该很明显吗?