clojure 新手指南(2)使用REPL求值

Clojure 拥有动态语言的全部好处。这意味着你能够在程序被加载后依然能够改变它,而且不用采起额外的步骤去编译代码。你既不用中止也不用重启正在运行的应用就可让修改生效。这对于其余语言来讲但是一个很是显著的优点,特别是若是你正打算将变化动态地(不用中止和重启服务器)呈献给用户时。 java

要想改变一个已经加载的程序,你惟一须要的是使用REPL去加载变化的地方。REPL是一个独立的程序,Clojure利用它提供给你和它的编译器直接交互的功能,固然也能与已经加载的程序进行交互。REPL表明读取(Read)、求值(Evaluate)、打印(Print)和 循环(Loop)。为了使用REPL,你只须要使用操做系统提供的命令行来运行它。 shell

表达式求值

打开你的REPL,随机敲入一些字符。很大概率上Clojure会及时地做出相应一个错误。它可不是什么值都会接受。 express

=>ugh
java.lang.Exception: Unable to resolve symbol: ugh in this context..

实际上你会发现Clojure只能对符合语法规则的表达式求值。 服务器

有一点须要记住,全部的表达式都会返回值。即便这个表达式什么也不作,它也会返回值,哪怕仅仅是一个'nil'(相似java中的null)。 数据结构


=>(do)  //先不用管do是作什么的,其实什么也不作
nil
这是一个很好的特性,由于若是clojure要是什么都不返回的话,你不知道它是否已经执行完毕仍是陷入了死循环。


求字面值

咱们以前求值都是针对“表达式”(expression)。咱们为何不用“代码”(code)或者“声明”(statements)来代替“表达式”这个词呢?一个理由是“表达式”这个词自己就包含了“代码"或者”声明”这两个概念。拎一个重要的缘由是clojure可不止是只能对代码求值。clojure能够对“数据”(data)求值,这一点与其余语言不一样。对clojure来讲,代码即数据。(感受这个例子体现的不是太明显) oop

数据被求值时仅仅返回自身 this

=>21.42
21.42

=>"a string of characters"
"a string of characters"
Clojure的数据操做可不单单是字符串或者数字,实际上它支持一套很是丰富的数据类型和数据结构。可是在咱们深刻clojure以前,仍是得先对着门语言多一些了解。
相关文章
相关标签/搜索