试玩儿Clojure

Posted 像什么

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了试玩儿Clojure相关的知识,希望对你有一定的参考价值。

(图:by 颖子临摹)


无意间看到现在用Clojure的渐渐多了起来,今天上午就了解了一下这门语言。


Clojure,2007年首次公开发布,算一算也近13个年头了。自诞生以来,Clojure受到业内一众大佬的推崇,这应该与人们对Lisp一直保有的热情也有关系。在近年来最爱欢迎的语言榜单上,Clojure也常年能居于前列,从业人数还是有一定数量。印象中的Lisp是门“括号”的语言,这次借着Clojure来体验一把。


Clojure运行在JVM之上,所以试的时候主要试一下Clojure定义函数和调用现成的Java类。


先做个简单的函数定义示例

1(ns com.sthlike.clojure.Demo)
2
3(defn hello [name]
4  (println (format "hello, %sname)))
5
6(hello "sun")


执行结果如下

hello, sun

接下来试一试实例化一个Java对象,再调用其方法。这边我们用一个简单的冒泡排序类来演示。Java类定义如下

 1public class Bubble implements Sortable {
2    public void sort(int[] ints) {
3        for (int i = 0; i < ints.length - 1; i++) {
4            for (int j = 0; j < ints.length - 1; j++) {
5                if (ints[j] > ints[j + 1]) {
6                    Utils.swap(ints, j + 1, j);
7                }
8            }
9        }
10    }
11}


现在看下Clojure如何引入、实例化和调用方法。


先是引入Java类声明

1(ns com.sthlike.clojure.Demo
2  (:import com.sthlike.sort.Bubble))


接下来声明一个int数组,作为排序要用的参数,之后再实例化排序对象,调用排序方法,并打印一下排序后的结果。

1(def arr (int-array [3 5 2 1]))
2(println (seq arr))
3
4(def bubble (Bubble.))
5(.sort bubble arr)
6(println (seq arr))


执行结果如下

(3 5 2 1)
(1 2 3 5)


到这里试玩儿结束,现在没有精力了解更深入,挖个坑在这里,以后再来挖挖这门语言。


往期文章



以上是关于试玩儿Clojure的主要内容,如果未能解决你的问题,请参考以下文章

clojure 中的分析(用于大型代码)

注释掉导致 clojure 运行时错误的代码

在这个简单的Clojure Ring应用程序中获取默认index.html文件以具有正确的Content-Type的正确方法是什么?

今天试玩了下codecombat

python3 tensorflow 试玩

Python成长之路第四篇模块儿