`

关于clojure的ns中的require,use,import等

阅读更多
初学clojure的时候曾经对ns引入库的几个函数疑惑了一阵,所以将理解记在这里。

关于require

require只负责引入clojure库,不绑定函数到当前的ns中。
;;引入java io,并指定缩略名为io
(require '[clojure.java.io :as io])
;;使用
(io/file "Filename")

;;在ns中使用
(ns test
  (:require [clojure.java.io :as io]))


关于refer

将函数绑定到当前的ns中。例如
;;把trim和capitalize绑定到当前的ns中,可以直接调用这两个方法
(refer 'clojure.string :only '[capitalize trim])

;;在ns中的写法
(ns test
  (:refer clojure.string :only [capitalize trim]))


关于refer-clojure

从源码可以看出,就是调用了refer
(defmacro refer-clojure
  "Same as (refer 'clojure.core <filters>)"
  {:added "1.0"}
  [& filters]
  `(clojure.core/refer '~'clojure.core ~@filters))


关于use

引入并绑定,相当于require+refer。
;;引入并绑定split方法,之后就可以直接使用了
(use '[clojure.string :only (split)])
;;直接在当前ns中使用split
(split "hello,world" #",")

;;在ns中的写法
(ns test
  (:use [clojure.string :only (split)]))


关于import

和require相似,不过import负责引入java库,require负责引入clojure库。
;;引入Clendar
(import [java.util Calendar])
;;使用
(Calendar/getInstance)

;;在ns中的写法
(ns test
  (:import [java.util Calendar]))


use在函数名称没有冲突,而且函数很常用的情况下使用比较合适。
require对于怕有名称冲突的情况下使用比较合适。
import就是用来引入java库的。

关于gen-class的片面

除了以上这些函数,ns中的gen-class也常用到,其功能就是将clojure代码编译成java class。
比如要将clojure代码打包成可执行jar包,那么指定main class就可以用上。(gen-class还有很多功能,这只是最常用的一个)
(ns test
     (:gen-class))
(defn -main [] (println "Hello, World!"))

;;编译之后,在shell中执行,打印hello, world!
java test

分享到:
评论

相关推荐

    Practical Clojure.pdf

    根据提供的文件内容,我们可以提取出以下关于Clojure语言的知识点: Clojure是一种编程语言,它给作者留下了深刻的印象,并且被视为一种多用途的、全面的编程语言。作者在开始学习Clojure时,体会到了编程的乐趣,...

    clojure电子书

    《Clojure电子书》集合包含了三本关于Clojure编程的重要书籍和一个Leiningen的Windows安装程序,这对于学习和深入理解Clojure语言至关重要。Clojure是一种基于Lisp的函数式编程语言,它运行在Java虚拟机(JVM)上,...

    Clojure调用Java类的一个实例

    在编程世界中,Clojure和Java是两种不同的编程语言,它们各具特色,但也有着紧密的联系。Clojure是一种基于Lisp的函数式编程语言,运行在Java虚拟机(JVM)上,因此它能够无缝地与Java代码交互。本实例将探讨如何在...

    Programming Clojure 英文电子版

    本书共200页,主要介绍了Clojure作为一种现代编程语言的独特魅力及其在实际开发中的应用技巧。 **Clojure**是一种基于Java虚拟机(JVM)的动态语言,它结合了多种优秀特性,使其成为一种非常有吸引力的选择。以下是...

    Clojure编程乐趣]+clojure_programming.pdf

    Clojure的设计目标是提供一个高效、并发、可移植的环境,适合解决现代软件开发中的复杂问题。在这个“Clojure编程乐趣”中,我们将深入探讨Clojure的核心概念和特性。 首先,Clojure强调函数式编程,这意味着程序被...

    Professional.Clojure.1119267277

    Clojure is an open-source programming language maintained and supported by Cognitect., and quickly gaining use across industries at companies like Amazon, Walmart, Facebook, Netflix, and more....

    clojure1.3.0及资料

    在这个压缩包文件中,包含了一些关于Clojure的重要资源,特别是对于学习和理解Clojure 1.3.0版本非常有帮助。 1. **《Programming Clojure》**:这本书由Stuart Halloway和Aaron Bedra编写,是Clojure编程的经典...

    Clojure入门教程- Clojure – Functional Programming for the JVM中文版

    - **书籍**: 有许多优秀的书籍可以帮助深入理解Clojure的语言特性和最佳实践,如《Clojure in Action》和《Programming Clojure》等。 #### 七、案例分析与实践 - **Clojure项目实战**: 通过实际项目来学习Clojure...

    clojure for mysql.zip

    本文将深入探讨如何在Clojure中使用MySQL,包括建立连接、执行SQL查询、处理结果以及优化性能。 首先,我们需要了解Clojure中用于与MySQL交互的库。Leiningen,Clojure的项目管理工具,使得引入第三方库变得简单。...

    linux-用于Kubernetes操作的Clojure工具

    Linux是世界上最广泛使用的开源操作系统内核,而Kubernetes(简称K8s)是Google贡献的容器编排系统,已经...在实际开发中,结合Clojure的其他库和框架,如Brigade、Metosin等,可以构建出更完整的Kubernetes解决方案。

    clojure1.4包

    要开始使用,你需要解压文件,然后在终端或命令行中启动 Clojure 的 REPL,通过 `require` 命令引入所需库,开始编写和测试代码。 总的来说,Clojure 1.4 和 http-kit 结合,为开发者提供了一套强大的工具,用于...

    Living clojure pdf

    根据提供的信息,我们可以推断出这是一本关于Clojure编程语言的书籍——《Living Clojure》,作者是Carin Meier。下面将从标题、描述、标签以及部分内容中提取相关的知识点。 ### 标题:Living Clojure PDF 这个...

    programming-clojure-3rd

    书中详细介绍了Clojure的语法特性,如S表达式(S-expressions)、宏(macros)和动态类型系统。S表达式是Clojure代码的基本形式,它提供了简洁的表示方式和强大的抽象能力。宏允许程序员在编译时进行代码操作,为...

    Clojure Data Analysis Cookbook

    ### Clojure 数据分析实战指南 #### 一、书籍概述与背景 《Clojure 数据分析实战指南》是一本针对数据分析师和技术开发人员的...通过本书的学习,你将能够更好地理解和应用 Clojure 在复杂数据处理任务中的强大功能。

Global site tag (gtag.js) - Google Analytics