Прежде всего, я новичок в Clojure и прошу прощения за мой плохой английский.
Допустим, у вас есть функция, которая, как предполагается, возвращает список карт, содержащих различную информацию (в этом примере - системная информация).
Я придумал следующий пример, но он мне кажется просто неправильным и слишком сложным.
Моя проблема в том, что 'for [disk (File / listRoots)' уже возвращает список, и мне нужно объединить 2 списка, чтобы получить желаемый результат, для которого должно существовать лучшее решение.
Я надеюсь, что кто-то из вас сможет рассказать мне о том, как сделать это более "Clojure способом".
(import
[java.lang Runtime System]
[java.io File])
(defn get-sysinfo []
(let [basic-info (list
{:name "Processor Count:", :value (. (Runtime/getRuntime) availableProcessors)}
{:name "OS Name:", :value (System/getProperty "os.name")}
{:name "OS Arch:", :value (System/getProperty "os.arch")}
{:name "User Name:", :value (System/getProperty "user.name")}
{:name "Java Version:", :value (System/getProperty "java.version")})]
(concat basic-info (for [disk (File/listRoots)]
{:name (str "Disk " (. disk getAbsolutePath)), :value (str "Free Space " (float (/ (. disk getFreeSpace) (* 1024 1024 1024))) " GB")}))))
Заранее спасибо
Маркус