如何使用Clojure创建以下对象?该对象取自java代码(来自Effective Java):
NutritionFacts cocaCola = new NutritionFacts.Builder(240,8).calories(100).sodium(35).carbohydrate(27).build();
发布于 2012-01-11 23:32:10
使用..宏。它是两个连续的点。它只允许您需要的东西--对上一个Java方法的结果连续调用next Java方法。
我没有REPL,但是你的代码行应该翻译成这样:
(.. (NutritionFacts.Builder. 240 8)
(calories 100)
(sodium 350)
(carbohydrates 27)
(build))发布于 2012-01-11 23:30:07
我只是从Clojure开始,但对我来说它看起来像是标准方法调用:
(doto
(NutritionFacts.Builder. 240 8)
(.carbohydrates 27)
(.sodium 35)
(.calories 100)
(.build)
)编辑:
正如@Goran Jovic所指出的,这将调用在第一种形式中创建的对象上的所有方法。
所以它在这种情况下是有效的,因为Java代码使用了方法链接,但并不是更普遍适用。
发布于 2012-01-11 23:31:04
(.. (NutrionalFacts.Builder. 240 8) (calories 100) (sodium 35) (carbohydrates 27) (build))
https://stackoverflow.com/questions/8821751
复制相似问题