Könnte mir jemand diesen Fehler erklären:Kann kein lokal mit einem primitiven initializer Hinweis geben
user> (let [^int i 3] i)
CompilerException java.lang.UnsupportedOperationException: Can't type hint a local with a primitive initializer, compiling:(NO_SOURCE_PATH:1)
Ich verstehe nicht,
was genau kann ich nicht typen Hinweis und warum ?
Warum kann ich einen Array-Typ Hinweis in der gleichen Situation verwenden?
user> (let [^ints ii (int-array 1)] ii) #<int[] [[email protected]>
Wie tippen Sie lokale Integer-Variablen?
Siehe http://clojure.org/java_interop#Java%20Interop-Some%20optimization%20tips: "([foo (int bar)] ...) ist der richtige Weg, um ein primitives Local zu erhalten. Nicht verwende^Integer usw. " –
Wahrscheinlich, weil der Compiler bereits genug weiß, um den Typ von 'i' hier zu bestimmen. – Alex
@ A.Webb Danke. Es löst wahrscheinlich mein praktisches Problem. Ich werde die Frage für eine Weile offen halten. Hoffentlich kann jemand den Grund für diese Einschränkung erklären. – sastanin