1. 程式人生 > >【Clojure 基本知識】 ns巨集的 指令(關鍵字) requrie的用法

【Clojure 基本知識】 ns巨集的 指令(關鍵字) requrie的用法

    指令(:require)用在(ns)之中,下面是實踐中總結的幾種用法(下文中省略ns巨集,只是給出:require的程式碼):

一、匯入完整名稱空間。

1,最簡單的形式:

(:require   clojure.data.json)

2,同時匯入同一名稱空間的多個子名稱空間:

(:require (clj-time  core  format ))

以上這兩種形式,匯入了完整的名稱空間,使用起來就比較麻煩了,比如呼叫clojure.data.json的read-str函式:

(clojure.data.json/read-str "{\"a\":1}")

二、使用":as"關鍵字,給匯入的名稱空間起一個別名。

(:require  [clojure.data.json :as json])

這樣,呼叫其中函式時就可以使用這個別名而不是全路徑了:

(json/read-str "{\"a\":1}")

同時匯入多個包的語法:

    (:require [clj-time.core :as time]
        [clj-time.format :as timef]
        [clojure.data.json :as json]
    )

對於上面clj-time這種情況,匯入多個子名稱空間,可以這樣:

 (:require (clj-time [core :as time][format :as timef]) )

三、使用":refer"關鍵字,直接匯入要使用的符號名稱(這種語法一般適用於僅需要使用的名稱空間中有限幾個符號的情況)。

例如只匯入一個:

(:require  [clojure.data.json :refer read-str])

此時,“read-str”直接位於當前的名稱空間,可以直接使用:

(read-str "{\"a\":1}")

同時匯入多個符號名稱:

(:require  [clojure.data.json :refer [read-str write-str] ])

還可以使用":all"關鍵字,這樣就和(use)巨集的效果一樣了,把名稱空間下的所有符號直接匯入到當前名稱空間,這是不推薦的,很容易引起衝突!例如:

user=> (:require  [clojure.data.json :refer :all])
IllegalStateException pprint already refers to: #'clojure.pprint/pprint in namespace: user  clojure.lang.Namespace.warnOrFailOnReplace (Namespace.java:88)

相關推薦

Clojure 基本知識 ns巨集指令關鍵字 requrie用法

    指令(:require)用在(ns)之中,下面是實踐中總結的幾種用法(下文中省略ns巨集,只是給出:require的程式碼): 一、匯入完整名稱空間。 1,最簡單的形式: (:require clojure.data.json) 2,同時匯入同一名稱空間的多個子名稱空間: (:require

Clojure 基本知識小技巧s

;;模擬console原位更新輸出 ;;空格擦除法,輸出空格,是為了擦除短字串尾部沒有佔用的位置,因為退格只是回退,並不刪除(dotimes [_ 10](let [n (rand) sn (.substring (str n ) 2) len (count sn)](print sn)(flush)(Th

Clojure 基本知識 關於函式引數的各種高階用法

關於Clojure函式引數用法,學習中一些總結,無廢話,直接看程式碼: 一、接受不定引數 ;;接受不定引數 (defn f0[& pms] (println "params count=" (count pms) " type pms=" (type pms)) (doseq [pm p

Unity基礎知識c#程式碼向持續更新

1.協同函式 是什麼? 它是一種類似Update的更新方案,可以被掛起,它不是執行緒,也不是非同步,它是在主執行緒中執行,並且可以被新增和移除。 能做什麼? (1)延時執行程式碼。 (2)等待某個操作再執行。 2.值和引用型別的區別 共同點:都是在託管堆上。 不同點:值型

nginx-rtmp09、指令Directives之 記錄Record

五、記錄/錄製(Record) 01、record 語法:record [off|all|audio|video|keyframes|manual]* 上下文:rtmp, server, application, recorder 記錄模式切換,流可以記錄到flv檔

7.13單例模式Singleton用法和用處以及破解單例

vol 創建者模式 code private let .get span test loaded 1):用處   是一種創建者模式,只生成一個實例對象,具有全局唯一性,當一個對象的產生需要比較多的資源時, 如讀取配置(如數據庫連接池、Spring中, 一個Compone

Divide and Conquer169. Majority Elementeasy

比較 esc time ble nbsp 也有 assume ray more #Week_1# #From LeetCode# Description: Given an array of size n, find the majority element.

Linux Nginx實戰之初識Nginx

Nginx LNMP 實戰 1.Nginx是什麽? nginx是一款高性能的HTTP和反向代理服務器軟件,第一個開源版本誕生於2004年,雖然誕生較晚但經過十多年的發展,已經成為非常流行的web服務器軟件,下圖是w3techs公布的全球網站服務器軟件統計報告 2.Nginx為什麽流行? 首先,ng

深入學習Redis主從復制

帶寬 hmaster flags 不必要 max auth rep get 出現問題 (續上文) 六、應用中的問題 1. 讀寫分離及其中的問題 在主從復制基礎上實現的讀寫分離,可以實現Redis的讀負載均衡:由主節點提供寫服務,由一個或多個從節點提供讀服務(多個

搜尋那些事細談lucenelucene核心API簡介

經過前面的簡單理論介紹,相信大家對搜尋引擎lucene有個簡單的瞭解。前面我們也提到過在lucene中主要包括索引和搜尋這兩大方面的元件。今天我們我們就通過一個簡單的例項來看一下lucene給我們提供的有關這兩個元件的簡單用法。 一:建立索引 在用lucene搜尋之前,我們首先要做的

搜尋那些事細談lucenelucene搜尋程式元件詳解

        對於類似lucene這樣的搜尋程式來說,首先了解其整個元件結構是非常有必要的,現在整體主觀上對它有一個簡單瞭解,然後逐一擊破學習。初學者很多人都以為lucene是一個完成的搜尋程式,其實這種理解是錯誤的。它其實僅僅是搜尋程

領卓教育Linux學習入門------系統命令之 打補丁

      打補丁,什麼意思,在玩LOL、王者、吃雞...等遊戲的時候,可能大家都遇到過打打補丁的過程,例如版本的升級就是一次打補丁的過程!       首先版本的升級和更新,小編最初以為是把遊戲重新安裝或者覆蓋安裝的過程,可是每次的升

基本知識之標頭檔案 stdlib.h && conio.h

https://wenda.so.com/q/1367031948061742  來自360問答 stdlib.h   stdlib 標頭檔案裡包含了C語言的一些函式   該檔案包含了的C語言標準庫函式的定義   stdlib.h裡面定義了五種型別、一些巨集和通用工具函式。型別例如si

Spark核心原始碼解析“spark-shell”

接著【初探Spark核心】解析“spark-shell”(一)來看 根據main的執行日誌來看,我們直接看一下org.apache.spark.repl.Main.main方法: main方法中建立了SparkILoop物件,作為引數傳遞給了doMain方法,並呼叫了doMain

Spark核心原始碼解析“spark-shell”

目錄 指令碼分析 遠端監控 之前使用spark-shell,編寫了一個word count程程式【初探Spark核心】Word Count程式的簡單分析 ,spark-shell究竟都為我們做了些什麼,下面就好好分析一下。 指令碼分析 當我們輸入指令“spark-shell”

尋優演算法粒子群演算法PSO 引數尋優的python實現

【尋優演算法】粒子群演算法(PSO) 引數尋優的python實現 一、演算法原理 1、粒子群演算法的名詞解釋 2、粒子更新 二、PSO演算法引數尋優的python實現 參考資料 粒子群優化演算法(Particle

尋優演算法量子遺傳演算法QGA 引數尋優的python實現

【尋優演算法】量子遺傳演算法(QGA) 引數尋優的python實現 一、量子編碼 1、染色體量子編碼 2、量子編碼轉換為二進位制編碼 二、量子進化 1、全乾擾交叉 2、量子變異 三、QGA多引數

Python web 開發使用者註冊功能2

我們繼續來完善使用者的註冊功能 註冊的時候前端post過來 手機號,驗證碼,密碼,而密碼和驗證碼我們只需要在serialzers 裡面驗證用,不需要序列化返回給前端 正常的serialzers  是怎樣的邏輯呢? 我們來看下CreateModelMixin 的原始碼  

2018.10.07SDOI2008BZOJ2049洛谷P2147Cave洞穴勘測LCT

洛谷傳送門 解析: 這是一道LCTLCTLCT的裸題,卻不夠板。 思路: 這是LCTLCTLCT的一個經典應用,維護動態樹上節點的聯通性。 對於基本操作我不再贅述,詳見我的LCTLCTLCT模板(暫未更新)。 這道題就講一講怎麼維護聯通性。 由於同一聯通塊中

2018.10.08HNOI2010BZOJ2002洛谷P3203彈飛綿羊LCT

洛谷傳送門 解析: LCTLCTLCT裸題啊。。。 思路: 可以很顯然的發現不管怎麼變,我們設定虛擬節點n+1n+1n+1,所有點到它的路徑構成一棵樹。 那不就完了,直接LCTLCTLCT維護這棵路徑樹的形態,路徑上經過多少點就是要被彈多少次,在LCTLCT