運(yùn)算符是一個(gè)符號(hào),通知編譯器執(zhí)行特定的數(shù)學(xué)或邏輯操作。
Clojure有以下類型的運(yùn)算符:
注 -在Clojure中,運(yùn)算符和操作數(shù)以下面的語法方式工作。
(operator operand1 operand2 operandn)
(+ 1 2)
上述示例對(duì)數(shù)字1和2進(jìn)行算術(shù)運(yùn)算。
Clojure語言支持任何語言的正常的算術(shù)運(yùn)算符。 以下是Clojure中提供的算術(shù)運(yùn)算符。
操作 | 描述 | 例 |
---|---|---|
+ | 兩個(gè)操作數(shù)相加 | (+ 1 2) 得到 3 |
- | 從第一個(gè)操作數(shù)中減去第二個(gè)操作數(shù) | (- 2 1) 得到 1 |
* | 兩個(gè)操作數(shù)的乘法 | (* 2 2) 得到 4 |
/ | 分子除以分母 | (float (/ 3 2)) 得到 1.5 |
inc | 用于將操作數(shù)的值增加1的增量運(yùn)算符 | inc 5 得到 6 |
dec | 用于將操作數(shù)的值減1的增量運(yùn)算符 | dec 5 得到 4 |
max | 返回其最大值的參數(shù) | max 1 2 3 返回 3 |
min | 返回其最小值的參數(shù) | min 1 2 3 返回 1 |
rem | 將第一個(gè)數(shù)除以第二個(gè)數(shù)的余數(shù) | rem 3 2 得到 1 |
(ns clojure.examples.hello (:gen-class)) ;; This program displays Hello World (defn Example [] (def x (+ 2 2)) (println x) (def x (- 2 1)) (println x) (def x (* 2 2)) (println x) (def x (float(/ 2 1))) (println x) (def x (inc 2)) (println x) (def x (dec 2)) (println x) (def x (max 1 2 3)) (println x) (def x (min 1 2 3)) (println x) (def x (rem 3 2)) (println x)) (Example)
上述示例產(chǎn)生以下結(jié)果:
4 1 4 2.0 3 1 3 1 1
關(guān)系運(yùn)算符允許比較對(duì)象。 以下是Clojure中可用的關(guān)系運(yùn)算符。
操作者 | 描述 | 例 |
---|---|---|
= | 測(cè)試兩個(gè)對(duì)象之間的相等性 | (= 2 2) 得到 true |
not= | 測(cè)試兩個(gè)對(duì)象之間的差異 | (not = 3 2) 得到 true |
< | 檢查左對(duì)象是否小于右對(duì)象正確的運(yùn)算符 | (< 2 3) 得到 true |
<= | 檢查左對(duì)象是否小于或等于右對(duì)象的運(yùn)算符 | (<= 2 3) 得到 true |
> | 檢查左對(duì)象是否大于右對(duì)象的運(yùn)算符 | (> 3 2) 得到 true |
> = | 檢查左對(duì)象是否大于或等于右對(duì)象的運(yùn)算符 | (>= 3 2) 得到 true |
(ns clojure.examples.hello (:gen-class)) ;; This program displays Hello World (defn Example [] (def x (= 2 2)) (println x) (def x (not= 3 2)) (println x) (def x (< 2 3)) (println x) (def x (<= 2 3)) (println x) (def x (> 3 2)) (println x) (def x (>= 3 2)) (println x)) (Example)
上述示例產(chǎn)生以下結(jié)果:
true true true true true true
邏輯運(yùn)算符用于計(jì)算布爾表達(dá)式。 以下是Groovy中可用的邏輯運(yùn)算符。
操作者 | 描述 | 例 |
---|---|---|
or | 這是邏輯“或”運(yùn)算 | (or true true)會(huì)得到 true |
and | 這是邏輯“與”運(yùn)算 | (and true false)會(huì)得到 false |
not | 這是邏輯“非”運(yùn)算 | (not false)會(huì)得到 true |
以下代碼段顯示了如何使用各種運(yùn)算符。
(ns clojure.examples.hello (:gen-class)) ;; This program displays Hello World (defn Example [] (def x (or true true)) (println x) (def x (and true false)) (println x) (def x (not true)) (println x)) (Example)
上述示例產(chǎn)生以下結(jié)果:
true false false
Groovy提供了四個(gè)按位運(yùn)算符。 以下是Groovy中可用的按位運(yùn)算符。
這是位取反運(yùn)算符運(yùn)算符 | 運(yùn)算符說明 |
---|---|
bit-and | 這是位“和”運(yùn)算符 |
bit-or | 這是位“或”運(yùn)算符 |
bit-xor | 這是位“xor”或Exclusive'or'運(yùn)算符 |
bit-not | 這是位取反運(yùn)算符 |
以下是這些運(yùn)算符的真值表。
p | q | p&Q | p | q | p ^ Q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
以下代碼段顯示了如何使用各種運(yùn)算符:
(ns clojure.examples.hello (:gen-class)) ;; This program displays Hello World (defn Example [] (def x (bit-and 00111100 00001101)) (println x) (def x (bit-or 00111100 00001101)) (println x) (def x (bit-xor 00111100 00001101)) (println x)) (Example)
上述示例產(chǎn)生以下結(jié)果:
576 37441 36865
與LISP一般情況一樣,沒有必要擔(dān)心運(yùn)算符優(yōu)先級(jí)。 這是S表達(dá)式和前綴符號(hào)的好處之一。 所有函數(shù)從左到右和從內(nèi)到外。 Clojure中的運(yùn)算符只是函數(shù),并且一切都完全括起來。
更多建議: