📅  最后修改于: 2023-12-03 15:14:10.357000             🧑  作者: Mango
Clojure 是一种基于 JVM 的动态语言。它允许程序员在编写简洁的代码的同时享受到 Java 是世界上最受欢迎的语言之一的生态系统。
在 Clojure 中声明变量非常简单。本文将介绍如何声明变量、变量的作用域以及变量类型。
在 Clojure 中,可以使用 def
关键字来声明变量。例如:
(def my-var "Hello, world!")
以上代码声明了一个名为 my-var
的变量,并将其初始化为字符串 "Hello, world!"。
注意,Clojure 中的变量不需要显式指定类型。其类型会在初始化时进行推断。
Clojure 中的变量作用域与其它语言相似。变量作用域是变量在程序中可见的区域。在 Clojure 中,变量分为全局和局部两种。
全局变量声明在程序的最顶层,其作用域覆盖整个程序。
(def my-global-var "I'm a global variable")
(defn print-global-var []
(println my-global-var))
(print-global-var) ; 输出 "I'm a global variable"
局部变量仅在代码块中声明,在代码块外不可见。
(defn print-local-var []
(let [my-local-var "I'm a local variable"]
(println my-local-var)))
(print-local-var) ; 输出 "I'm a local variable"
在 Clojure 中,数据类型分为基本类型和复合类型。
Clojure 支持以下基本类型:
long
,int
,short
,byte
) 和浮点数 (double
,float
)char
boolean
nil
Clojure 中最常用的复合类型是列表 (list
) 和向量 (vector
)。列表是一组有序元素,可以包含任何类型的数据,而向量是一组有序元素,每个元素都必须是相同的类型。
(def my-list (list "apple" 123 true))
(def my-vector [1 2 3 4])
(println (first my-list)) ; 输出 "apple"
(println (second my-vector)) ; 输出 2
除了列表和向量之外,Clojure 还支持集合 (set
) 和映射 (map
) 等复合类型。
总而言之,Clojure 的变量系统既简单又灵活。变量声明和赋值容易理解,而作用域和类型系统为程序员提供了足够的灵活性。