2012-04-03 13 views
5

Ich möchte die Java-Methode verwenden: R untime.getRuntime().availableProcessors() und speichern Sie das Ergebnis in einer Integer-Variable.Anzahl der Prozessoren in Clojure? Java interop

So in Clojure tat ich dies:

(def n-cpu ((.availableProcessors (Runtime/getRuntime)))) 

und diese:

(def n-cpu (Integer/parseInt ((.availableProcessors (Runtime/getRuntime))))) 

aber keine Arbeit.

Irgendwelche Vorschläge?

Antwort

15

Wenn Sie den Methodenaufruf in Ihrer Version mit einer ganzen Zahl ersetzen, ist es das, was Sie logisch haben:

(def n-cpu (4)) 

Clojure können die Liste nicht umgehen (4) da das erste Element in einer nicht genannten Liste eines sein muss Funktion. In diesem Fall ist das erste Element eine ganze Zahl und Clojure behandelt ganze Zahlen nicht als Funktionen. Wenn Sie die nicht benötigten Klammern entfernen, würde Ihre var Definition wie folgt aussehen:

(def n-cpu (.availableProcessors (Runtime/getRuntime))) 

Beachten Sie, wie wenn Sie den Methodenaufruf mit einer ganzen Zahl ersetzen, wird es (def n-cpu 4)?

+0

Nochmals vielen Dank für Ihre Hilfe! – nuvio

Verwandte Themen