关闭

clojure学习(1)——判断语句

标签: clojure
347人阅读 评论(0) 收藏 举报
分类:

clojure是操作符前缀的语言。

为单行注释

nil相当于Java里面的null,if判断里面的false

if语句除了false和nil,其他都为true,如果else后面没内容,为false时就返回nil。

user=> (defn is-small [number] (if (< number 100) "yes" "no"))
#'user/is-small
user=> (is-small 20)
"yes"
user=> (is-small 150)
"no"
user=> (defn is-small [number] (if (< number 100) "yes" ))
#'user/is-small
user=> (is-small 110)
nil

if-not:和if相反的判断

user=> (if-not (zero? 0) "no" "yes")
"yes"
user=> (if-not (zero? 123) "no" "yes")
"no"

if-let 用法:第一个参数为绑定变量,第二个参数为表达式。并根据第二个表达式参数返回的值确定执行then、else语句。

user=> (defn if-let-test [arg] (if-let [x arg] "true" "false"))
#'user/if-let-test
user=> (if-let-test 1)
"true"
user=> (if-let-test nil)
"false"
user=> (if-let-test false)
"false"

when

当不为false或nil时才执行后面的语句,否则返回nil

user=> (when false (println "is true") "return true")
nil
user=> (when false (println "is true") "return true" "return false")
nil
user=> (when true (println "is true") "return true" "return false")
is true
"return false"
user=> (def has-value (when true (println "ni hao") "returned value"))
ni hao
#'user/has-value
user=> has-value
"returned value"

when-not

为false或nil时候才执行后面语句,否则返回nil

user=> (when-not false (println "is false") "return true" "return false")
is false
"return false"
user=> (when-not false (println "is false") (println "return true") "return false")
is false
return true
"return false"

when-let

类似if-let,当绑定变量部位false或nil才执行后面语句,否则返回nil

user=> (when-let [a true] (println "true") "return true")
true
"return true"
user=> (when-let [a false] (println "true"))
nil
user=> (when-let [a nil] (println "true"))

cond

类似Java里面的switch-case-default语句

user=> (defn f [n] (cond (< n 0) "<0" (< n 10) "<10" :else ">=10"))
#'user/f
user=> (f -56)
"<0"
user=> (f 56)
">=10"
user=> (f 156)
">=10"
user=> (f 6)
"<10"

case

类似switch里的case

user=> (let [mystr "ni hao"]
(case mystr
"" 0
"ni hao" (count mystr)))
6
user=> (let [mystr "no one"]
(case mystr
"" 0
"ni hao" (count mystr)
"default"))
"default"

多值匹配

user=> (defn f [x] (case x
(5 10) "*5"
(3 6 9) "*3"
"others"))
#'user/f
user=> (f 5)
"*5"
user=> (f 10)
"*5"
user=> (f 3)
"*3"
user=> (f 11)
"others"

do

执行多条语句,返回最后一条语句值

user=> (def v (do (println 123) (println 321) (println 543) 23 0))
123
321
543
#'user/v
user=> v
0
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Lua初识(4)_判断语句

lua中的判读语句 三个关键字 if, else, elseif, end 判读语句的三种格式: 一、、 if 表达式 then 语句块 end 二、 if 表达式 then 语句块1 ...
  • taotaoah
  • taotaoah
  • 2016-09-03 11:01
  • 1367

MySQL查询语句练习题

Sutdent表的定义 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id ...
  • json_ligege
  • json_ligege
  • 2016-07-20 15:52
  • 1628

python 脚本学习记录(1)

Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不...
  • zx84289061
  • zx84289061
  • 2014-03-27 15:39
  • 1641

clojure学习笔记1——安装

装载至http://my.oschina.net/clopopo/blog/141813 目录[-] 步骤一:使用命令行接口步骤二:检查java步骤三:安装clojure步骤四:通过REP...
  • szzxsh
  • szzxsh
  • 2015-11-10 19:07
  • 34

Clojure 学习入门(1)—— 学习资料

官方文档: http://clojure.org/documentation 中文资料(强烈推荐): 1.clojure入门教程 http://xumingming.sinaapp.com/302/c...
  • sunboy_2050
  • sunboy_2050
  • 2013-12-22 08:38
  • 11624

Clojure 学习入门(15)—— 条件判断

一、标准的流程控制 if: 将一个判断表达式作为它的第一个参数进行求值。如果求值为true,那么就返回它的第二个参数(相当于“then”子句)的求值结果。如果结果为false(包括nil)就返回第三个...
  • sunboy_2050
  • sunboy_2050
  • 2014-01-08 23:12
  • 12513

clojure实战——IO(1)

# clojure实战——IO(1) 本博客主要介绍clojure基本文件处理。除了clojure.core单元,还主要用到clojure.java.io单元。在实践本博客中的示例时,可以在repl中...
  • Linux2_SCDN
  • Linux2_SCDN
  • 2017-09-02 10:09
  • 211

C++反汇编学习笔记1——选择判断语句

逆向第一篇,两年前写的,欢迎大家吐槽! 1.流程控制语句的识别 If…else…语句比较简单,这里就不做详细说明。这里对switch语句和循环语句进行判断。 1.1 switch语句 1.1.1 ca...
  • wuyangbotianshi
  • wuyangbotianshi
  • 2013-12-17 18:18
  • 1370

Clojure 学习入门(1) - 学习资料

转自:http://blog.csdn.net/ithomer/article/details/17225813 Clojure(发音类似"closure",['kləʊʒə(r)])是一套...
  • u010164190
  • u010164190
  • 2016-10-06 23:30
  • 106

Clojure 学习入门(11)—— 宏 macro

` 原原本本地直译过去,不用`,let语句不被翻译,例如: (let [datastr '{:a 1 :b 2}]) ~' 后面的变量被直接翻译过去,例如:(let [~'conn "met...
  • sunboy_2050
  • sunboy_2050
  • 2013-12-27 23:59
  • 9874
    个人资料
    • 访问:36207次
    • 积分:676
    • 等级:
    • 排名:千里之外
    • 原创:31篇
    • 转载:1篇
    • 译文:0篇
    • 评论:6条
    最新评论