📜  Clojure-变量(1)

📅  最后修改于: 2023-12-03 15:14:10.357000             🧑  作者: Mango

Clojure - 变量

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 支持以下基本类型:

  • 数字类型:整数 (longintshortbyte) 和浮点数 (doublefloat)
  • 字符类型: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 的变量系统既简单又灵活。变量声明和赋值容易理解,而作用域和类型系统为程序员提供了足够的灵活性。