Bir int dizisi def
ise ve dizideki bir öğeyi Long ile ayarladıktan sonra, herhangi bir şikayetin bulunmadığını fark ettim. Ancak int dizisini bir let
bloğuna bağlarsam, Uzun olan bir öğe ayarladığınızda, bir Geçersiz Klasör istisnası atılır. Birisi bunun neden olduğunu anlamama yardımcı olabilir mi?Int dizileri 'def' ile bağlı neden niçin Clojure'da uzun değerler kabul edilir?
Aşağıdaki kod tutarsızlığı göstermektedir. Hem Clojure 1.8'de hem de 1.9'un en yeni beta sürümünde denedim ve bu sonuçları aldım. tür kesmesi let
meydana çünkü
(def a (int-array 10))
(aset a 0 Long/MAX_VALUE) ;; sets first element to -1
(let [b (int-array 10)]
(aset b 0 Long/MAX_VALUE)) ;; throws java.lang.IllegalArgumentException: Value out of range for int:
Öğeyi '-1' olarak ayarlamak bana bir hata gibi görünüyor: sessizce * denetlenmiyor * aritmetik. – Thumbnail
@Thumbnail Katılıyorum; [CLJ-1142] ile aynı satırda bir hata gibi görünüyor (https://dev.clojure.org/jira/browse/CLJ-1142). –