Java Interop: Why do (.setProperty (Properties.) "key1" "value1" ) 返回 nil 但将调用包装在 doto 中有效?



以下代码返回 nil:

(.setProperty (Properties.) "key1" "value1") -> nil

但是,以下内容似乎按预期工作:

(doto (Properties.) (.setProperty "key1" "value1")) -> {"key1" "value1"}

为什么?

.setProperty返回前一个值,如果不存在,则返回null值。由于它正在新的Properties实例上运行,因此这是nil(doto x f) 在第一个参数位置使用 x 计算f,然后返回 x 。在这种情况下,将忽略setProperty返回的nil,并返回修改后的Properties实例。

第一个窗体计算方法调用的返回值。

第二个窗体在运行方法调用作为副作用后计算对象实例。

最新更新