2012-04-03 52 views
5

Tôi muốn sử dụng phương pháp Java: R untime.getRuntime().availableProcessors() và lưu kết quả vào biến số nguyên.Số lượng bộ xử lý trong Clojure? Java interop

Vì vậy, trong Clojure Tôi đã làm điều này:

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

và điều này:

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

nhưng không ai làm việc.

Mọi đề xuất?

Trả lời

15

Nếu bạn thay thế các lời gọi phương thức trong phiên bản của bạn với một số nguyên, đây là những gì bạn một cách logic có:

(def n-cpu (4)) 

Clojure không thể xử lý danh sách (4) vì mục đầu tiên trong danh sách không trích dẫn phải là một chức năng. Trong trường hợp này, mục đầu tiên là một số nguyên và Clojure không xử lý các số nguyên làm hàm. Nếu bạn loại bỏ các dấu ngoặc đơn không cần thiết, định nghĩa var của bạn sẽ trông như thế này:

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

Thông báo như thế nào nếu bạn thay lời gọi phương thức với một số nguyên, nó trở nên (def n-cpu 4)?

+0

Cảm ơn bạn đã giúp đỡ! – nuvio

Các vấn đề liên quan