1
Vývoj / Re:Trait a konstruktor
« kdy: 21. 12. 2020, 18:53:52 »Žel, opět se musím zeptat: Jde nějak ještě když bych tomu chtěl přidat nějakou logiku? Tedy konstruktor MessageStyle přijme g, přepočítá ho, a teprve výsledek uloží do fieldu Polite(g).
Určitě. Pokud ta logika nemůže být až v traitu (metoda init v původním příkladu), dá se v argumentu traitu použít libovolný výraz (typicky funkce, metoda v přidruženém objektu, jednoduchý inline výraz).
Kód: [Vybrat]
trait T(val traitField: String)
def prepareArgumentForTrait(l: List[String]): String = l.mkString("")
class C(l: List[String]) extends T(prepareArgumentForTrait(l))
object Main extends App {
val o = C(List("a", "b", "c"))
println(o.traitField)
}
https://scastie.scala-lang.org/y9HBofuwRce6a37fWbXdpA