栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从Java调用Clojure

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从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") 


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/393832.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号