java 调用 clojure_从Java调用Clojure

小编典典

从Clojure 1.6.0开始,有一种新的首选方式来加载和调用Clojure函数。现在,此方法优于直接调用RT(并在此取代了许多其他答案)。Javadoc在这里 -主要入口是clojure.java.api.Clojure。

要查找并调用Clojure函数:

IFn plus = Clojure.var("clojure.core", "+");

plus.invoke(1, 2);

中的功能clojure.core会自动加载。其他名称空间可以通过require加载:

IFn require = Clojure.var("clojure.core", "require");

require.invoke(Clojure.read("clojure.set"));

IFn可以传递给更高阶的函数,例如下面的示例传递plus给read:

IFn map = Clojure.var("clojure.core", "map");

IFn inc = Clojure.var("clojure.core", "inc");

map.invoke(inc, Clojure.read("[1 2 3]"));

IFnClojure中的大多数s都引用函数。但是,有少数是指非功能数据值。要访问这些,请使用deref代替fn:

IFn printLength = Clojure.var("clojure.core", "*print-length*");

IFn deref = Clojure.var("clojure.core", "deref");

deref.invoke(printLength);

有时(如果使用Clojure运行时的其他部分),你可能需要确保Clojure运行时已正确初始化-为此目的,在Clojure类上调用方法就足够了。如果你不需要在Clojure上调用方法,则只需使类加载就足够了(过去曾经有类似的建议来加载RT类;现在首选):

Class.forName("clojure.java.api.Clojure")

2020-03-03

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值