2012-04-03 12 views
5

Me gustaría utilizar el método de Java: R untime.getRuntime().availableProcessors() y guardar el resultado en una variable entera.Cantidad de procesadores en Clojure? Interop de Java

Así que en Clojure Hice esto:

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

y esto:

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

pero ninguno trabaja.

¿Alguna sugerencia?

Respuesta

15

Si reemplaza la llamada al método en su versión con un entero, esto es lo que lógicamente tiene:

(def n-cpu (4)) 

Clojure no puede manejar la lista (4) porque el primer elemento de una lista no cotizado debe ser una función. En este caso, el primer elemento es un número entero, y Clojure no trata los enteros como funciones. Si quita los paréntesis innecesarios, su definición var se vería así:

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

Note como si se reemplaza la llamada al método con un entero, se hace (def n-cpu 4)?

+0

¡Gracias nuevamente por su ayuda! – nuvio