分享您的观点,请访问 2024Clojure 状态调查!

欢迎!有关该系统的更多信息,请参阅关于页面。

0
java.data

当在布尔属性为 false 的对象上调用 from-java 时,可能返回不是 Boolean/FALSE 的封装布尔值。
这造成的结果是布尔值等于 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

评论:jafingerhut

附带路径 jdata-9-v1.patch,将数据从-data转换为使用 clojure.core/boolean 的 Java 布尔值

0

评论:bowbahdoe

在转换一些难看的生成的 WSDL 对象时遇到了这个问题。一些使用 Boolean 作为属性值,而另一些则只是 Object,因为它们在提供的模式中没有指定类型。

0

评论:bowbahdoe

在转换一些难看的生成的 WSDL 对象时遇到了这个问题。一些使用 Boolean 作为属性值,而另一些则只是 Object,因为它们在提供的模式中没有指定类型。

0
...