Clojure предлагает макрос с именем doto
, который принимает свой аргумент и список функций и по существу вызывает каждую функцию, добавляя (оцениваемый) аргумент:
(doto (new java.util.HashMap) (.put "a" 1) (.put "b" 2))
-> {a=1, b=2}
Есть ли способ реализовать что-то подобное в Scala? Я предвижу что-то со следующей формой:
val something =
doto(Something.getInstance) {
x()
y()
z()
}
который будет эквивалентен
val something = Something.getInstance
something.x()
something.y()
something.z()
Можно ли использовать scala.util.DynamicVariable
s?
Обратите внимание, что с помощью методов factory, таких как Something.getInstance
, невозможно использовать общий шаблон Scala
val something =
new Something {
x()
y()
z()
}