gpt4 book ai didi

java - 如何将双冒号运算符翻译成 Clojure?

转载 作者:搜寻专家 更新时间:2023-10-31 20:10:58 35 4
gpt4 key购买 nike

我通过阅读 source 发现了 java 8 的新语法对于我试图争论的框架:

 Runtime.getRuntime().addShutdownHook(new Thread(Sirius::stop));

在clojure中,我可以翻译成:

(.addShutdownHook (Runtime/getRuntime) (Thread. ????))

但我不确定要为 ??? 添加什么内容


最佳答案

IFn 扩展了 Runnable,所以你可以这样做

#(Sirius/stop)

值得注意的是

  • 你必须创建 lambda。 Clojure 不会让您像 Sirius/stop
  • 那样引用它
  • Java 8 函数式接口(interface)的工作原理是仅使用一种方法匿名实现接口(interface)。所以

    新线程(Sirius::stop)

只是

的语法糖
new Thread(new Runnable {
public void run() {
Sirius.stop();
}
})

如果有问题的接口(interface)不是 Runnable/Callable,您将不得不使用 reify 宏。

关于java - 如何将双冒号运算符翻译成 Clojure?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29179512/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com