Есть ли способ в Scala, чтобы изменить параметр, переданный в метод конструктора класса аргументов/аргумент/apply()
, прежде чем он станет val
? Например.
case class AbsVal private(aVal: Double)
object AbsVal {
def apply(aVal: Double): AbsVal = AbsVal(Math.abs(aVal)) // doesn't compile
}
Это, конечно, не соответствует неоднозначной ссылке на перегруженное определение. Я подумал, что, возможно, я мог бы обмануть его с помощью именованных параметров (и разными именами параметров для конструктора vs apply()
), но это тоже не сработает.
Конечно, вместо apply()
я мог бы просто иметь частный конструктор и метод factory, но это раздражало, что нужно подставлять код AbsVal.make(x)
вместо AbsVal(x)
.