gpt4 book ai didi

java - 如何在 Frege native 声明中声明 Java 枚举?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:13 25 4
gpt4 key购买 nike

在 JavaFX 动画类上使用 Frege native-gen 工具时,它会生成包含以下内容的 Frege 代码:

data Animation = mutable native javafx.animation.Animation where
native getRate :: Animation -> IO Double
native getStatus :: Animation -> IO Animation_Status

但代码无法编译,因为缺少 Animation_Status 类型。在 Java 方面,这是一个枚举。 http://docs.oracle.com/javafx/2/api/javafx/animation/Animation.Status.html

在 native 声明中处理此问题的建议方法是什么?

最佳答案

我们可以为内部类生成弗雷格代码。输入到 native-gen 工具的类名是 Class.getName 返回的名称。对于 Animation.Status 枚举,它是 javafx.animation.Animation$Status

$ java -jar native-gen-1.0-SNAPSHOT.jar 

Enter class name: javafx.animation.Animation$Status

data Animation_Status = pure native javafx.animation.Animation.Status where

pure native paused "javafx.animation.Animation.Status.PAUSED" :: Animation_Status
pure native running "javafx.animation.Animation.Status.RUNNING" :: Animation_Status
pure native stopped "javafx.animation.Animation.Status.STOPPED" :: Animation_Status

pure native valueOf "javafx.animation.Animation.Status.valueOf" :: String -> Animation_Status

native values "javafx.animation.Animation.Status.values" :: () -> STMutable s (JArray Animation_Status)

derive Serializable Animation_Status

顺便说一句,我目前正在开发的native-gen版本可以递归地为整个Java包及其子包生成Frege代码。我们可以只提供根包 javafx,它将为其所有子包中的所有类创建 Frege 模块。我希望在本周末之前发布它。

关于java - 如何在 Frege native 声明中声明 Java 枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32057080/

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