Я писал тест клиент/сервер и столкнулся с чем-то неожиданным. В следующем коде, аргумент порта Socket
конструктор не может быть выведено:Почему Clojure не может вывести этот тип def?
(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
или перед аргументом, но зачем это необходимо? Разве не должно быть очевидно, что это за тип?
Что не могу понять, порт ? Код отлично работает на моей машине. Если проблема связана с Cursive, см. [Этот ответ] (http://stackoverflow.com/questions/32472894/how-to-disambiguate-in-clojure). –
@ErwinRooijakkers Я использую Cursive, чтобы это было возможно. – Carcigenicate