簡體   English   中英

如何在Clojure中使用Zip?

[英]How do I use Zip in Clojure?

我對clojure非常新。 zip實用程序看起來很有趣但我似乎無法使用它。

我試過了

;; ZIP
(:use "zip")
(def data '[[a * b] + [c * d]])
(def dz (zip/vector-zip data))

但我得到了

java.lang.Exception: No such namespace: zip 

你如何使用外部庫?

您可能會混淆兩種不同的方式來導入代碼。 你可以這樣做:

user> (use 'clojure.zip)

或者,當您在源文件中聲明命名空間時:

(ns foo
  (:use clojure.zip))

第二個版本是一個擴展到第一個版本的宏。

(ns) ,執行(:use "zip")將要處理:use作為函數:use並以"zip"作為參數調用它(即嘗試使用字符串"zip"作為集合並查找key :use in it),什么都不做。

clojure.zip有一些函數,其名稱與clojure.core東西沖突,所以你要么做這樣的事情:

user> (use '(clojure [zip :rename {next next-zip replace replace-zip remove remove-zip}]))

或者最好這樣:

user> (require '(clojure [zip :as zip]))

對於后者,您可以根據需要引用(zip/vector-zip data)等函數。

請參閱requirerefer的文檔以及有關libs的頁面。

我對clojure知之甚少,但這個小曲子似乎有效:

(require '[clojure.zip :as zip]) 
(def t '(:a (:b :d) (:c :e :f))) 
(def z (zip/zipper rest rest cons t)) 
(zip/node z) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM