Clojure ofrece una macro llamada doto
que lleva su argumento y una lista de funciones y, esencialmente, llama a cada función, anteponiendo el argumento (evaluado):`doto` de Scala
(doto (new java.util.HashMap) (.put "a" 1) (.put "b" 2))
-> {a=1, b=2}
¿Hay alguna manera de poner en práctica algo similar en Scala? Me imagino algo con la siguiente forma:
val something =
doto(Something.getInstance) {
x()
y()
z()
}
que será equivalente a
val something = Something.getInstance
something.x()
something.y()
something.z()
¿Sería posible utilizar scala.util.DynamicVariable
s?
Tenga en cuenta que con los métodos de fábrica, como Something.getInstance
, no es posible utilizar el patrón común Scala
val something =
new Something {
x()
y()
z()
}
Como nota al margen, esta pregunta es un dup. No puedo encontrar el original, sin embargo. –