2024 年 Clojure 状态调查 中分享您的想法!

欢迎!请查看关于页面获取更多关于如何使用本站的信息。

0
java.data

调用具有为 false 的 Boolean 属性的对象的 from-java 可能会返回非 Boolean/FALSE 的boxed Booleans。
这会导致一个等于 false 的布尔值,但在 if 的 true 路径中。

`
(def bool (:absolute (from-java (URI. ""))))

bool
=> false
(= bool false)
=> true
(if bool true false)
=> false
`

这会导致真正令人困惑的行为。
由于 clojure 不会更改 if 的行为 (https://dev.clojure.org/jira/browse/CLJ-1718) 并且我们不控制布尔值的构造,我认为 from-java 应该意识到这个问题并修复它。

可以通过添加一个用于 Boolean 的额外方法来修复它,该方法以正确的方式重建 Boolean,尽管我不确定最好的方法是什么。

7 个答案

0

评论由:iamdrowsy发表

能否编辑描述?
最后一行代码显示的是预期的行为,而不是观察到的行为。

(if bool true false) => true

这就是它目前解析成的内容。

0

评论由:iamdrowsy发表

能否编辑描述?
最后一行代码显示的是预期的行为,而不是观察到的行为。

(if bool true false) => true

这就是它目前解析成的内容。

0

评论:jafingerhut

附加路径 jdata-9-v1.patch,该补丁将从-data转换为使用 clojure.core/boolean 将 Java 布尔值

0
by

评论:jafingerhut

附加路径 jdata-9-v1.patch,该补丁将从-data转换为使用 clojure.core/boolean 将 Java 布尔值

0
by

评论:bowbahdoe

在转换一些难以生成的 WSDL 对象时遇到此问题。一些将 Boolean 用作属性值,而另一些则因为是它们的类型没有在给定的模式中指定,所以只是 Object。

0
by

评论:bowbahdoe

在转换一些难以生成的 WSDL 对象时遇到此问题。一些将 Boolean 用作属性值,而另一些则因为是它们的类型没有在给定的模式中指定,所以只是 Object。

0
by
...