以下代码返回nil:
(.setProperty (Properties.) "key1" "value1") -> nil
然而,以下内容似乎按预期工作:
(doto (Properties.) (.setProperty "key1" "value1")) -> {"key1" "value1"}
为什么?
答案 0 :(得分:4)
.setProperty
会返回上一个值,如果不存在,则返回null
。由于它是在新的Properties
实例上运行,因此它是nil
。 (doto x f)
在第一个参数位置评估f
x
,然后返回x
。在这种情况下,nil
返回的setProperty
将被忽略,并返回修改后的Properties
实例。
答案 1 :(得分:1)
第一种形式评估方法调用的返回值。
第二种形式在将方法调用作为副作用运行后评估为对象实例。