codecamp

Clojure 运算符

运算符是一个符号,通知编译器执行特定的数学或逻辑操作。

Clojure有以下类型的运算符:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符

-在Clojure中,运算符和操作数以下面的语法方式工作。

语法

(operator operand1 operand2 operandn)

(+ 1 2)

上述示例对数字1和2进行算术运算。

算术运算符

Clojure语言支持任何语言的正常的算术运算符。 以下是Clojure中提供的算术运算符。

操作描述
+两个操作数相加(+ 1 2) 得到 3
-从第一个操作数中减去第二个操作数(- 2 1) 得到 1
*两个操作数的乘法(* 2 2) 得到 4
/分子除以分母(float (/ 3 2)) 得到 1.5
inc用于将操作数的值增加1的增量运算符inc 5 得到 6
dec用于将操作数的值减1的增量运算符dec 5 得到 4
max返回其最大值的参数max 1 2 3 返回 3
min返回其最小值的参数min 1 2 3 返回 1
rem将第一个数除以第二个数的余数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)

上述示例产生以下结果:

4
1
4
2.0
3
1
3
1
1

关系运算符

关系运算符允许比较对象。 以下是Clojure中可用的关系运算符。

操作者描述
=测试两个对象之间的相等性(= 2 2) 得到 true
not=测试两个对象之间的差异(not = 3 2) 得到 true
<检查左对象是否小于右对象正确的运算符(< 2 3) 得到 true
<=检查左对象是否小于或等于右对象的运算符(<= 2 3) 得到 true
>检查左对象是否大于右对象的运算符(> 3 2) 得到 true
> =检查左对象是否大于或等于右对象的运算符(>= 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)

上述示例产生以下结果:

true
true
true
true
true
true

逻辑运算符

逻辑运算符用于计算布尔表达式。 以下是Groovy中可用的逻辑运算符。

操作者描述

or

这是逻辑“或”运算(or true true)会得到 true

and

这是逻辑“与”运算(and true false)会得到 false

not

这是逻辑“非”运算(not false)会得到 true

以下代码段显示了如何使用各种运算符。

(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)

上述示例产生以下结果:

true
false
false

位运算符

Groovy提供了四个按位运算符。 以下是Groovy中可用的按位运算符。

这是位取反运算符
运算符运算符说明
bit-and

这是位“和”运算符

bit-or

这是位“或”运算符

bit-xor

这是位“xor”或Exclusive'or'运算符

bit-not

这是位取反运算符

以下是这些运算符的真值表。

pqp&Qp | qp ^ Q
00000
01011
11110
10011

以下代码段显示了如何使用各种运算符:

(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)

上述示例产生以下结果:

576
37441
36865

运算符优先级

与LISP一般情况一样,没有必要担心运算符优先级。 这是S表达式和前缀符号的好处之一。 所有函数从左到右和从内到外。 Clojure中的运算符只是函数,并且一切都完全括起来。


Clojure 变量
Clojure 循环
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Clojure Useful Resources

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }