我正在寻找一种满足以下条件的脚本语言:
- 有据可查
- 用Java实现
- 了解数据类型(可以处理长整数、字符串等)
- 完全可扩展
有什么建议么?目前,我正在使用 Javascript,但它设置数字的双精度数对于我正在做的数据工作来说还不够大。
谢谢!
特别是,Groovy可以用作脚本语言,但不是必须的,它构建在 Java 之上。它不是其他语言的 Java 端口,这意味着它与 Java 的集成比 JRuby/Jython 更紧密,尽管自从我上次查看它们以来这可能已经改变。
至于 Groovy 的文档,您可能想购买Groovy in Action (plug plug ;)
Python 和 Ruby 有 Java 实现(查找 Jython 和 JRuby)。
LuaJava可能是它。所有数字在内部都表示为 lua 中的双精度数。
我不确定您所说的“了解数据类型”是什么意思。如果您的意思是它具有字符串、数字等,那么 JavaScript、Groovy、Python 和 Ruby 是与 Java 很好地集成的众多语言中的一些。如果您正在寻找一种静态类型的语言,我不确定。
关于 JavaScript 中双精度数不够大的问题,您可以从 JavaScript 代码中分配 Java BigDecimal 对象(或 BigInteger 对象)。因此,数字表示对您来说应该不是问题。
你是什么意思“它设置数字的两倍对于我正在做的数据工作来说不够大。” 在大多数语言 AFAIK 中,双打的大小相同。
您需要多少精度?如果您需要超过 16 位以上的精度,也许 BigDecimal 适合您。
Clojure 或 Groovy 将是我的建议。
Jon 的回答已经有一些关于 Groovy 的详细信息,所以这里有更多关于 Clojure 的信息:
特别是 Java 互操作非常简单:Clojure 对象是Java 对象,反之亦然,您可以直接调用方法:
;; create a string
(def s "Hello World")
;; inspect its type
(class s)
=> java.lang.String
;; call a method
(.length s)
=> 11
;; count the characters (Clojure can treat Strings as a sequence of characters)
(frequencies s)
=> {\H 1, \e 1, \l 3, \o 2, \space 1, \W 1, \r 1, \d 1}