Данная статья является дополнением к my previous question по статической типизации Clojure.Статическая типизация Clojure, часть 2
Я просмотрел исходный код Java для компилятора и есть несколько мест, где он проверяет значение *warn-on-reflection*
, но когда я скомпилировать следующий код, я только получаю ошибку во время выполнения:
(defn div-2 [^String s] (/ 2 s))
Существуют ли какие-либо обстоятельства, при которых этот код должен не дать предупреждение о компиляции (это не так)? Насколько сложно было бы дать компилятору предупреждение по следующему коду:
(defn get-length [^String s] (.length s))
(defn test-get-length [] (get-length 2.0))
Спасибо.
Несчастных, но я думаю, что вы правы. – Ralph
, и можно ли использовать метаданные lang-конструкций, чтобы получить некоторый вкус проверки статического типа над ними, без изменения языка? – jneira