我想创建一个只保留一位数字的类。
class onlyLikesSingleDigits(val anyNumber: Seq[Int]) {
val onlySingleDigits = anyNumber.filter(_ < 10)
}
这个想法是你可以构造它,并且任何大于或等于10的数字都会被丢弃。
我的实施看起来很丑陋。我不能在不使用anyNumber
的情况下执行此操作吗?我想使用构造函数参数初始化我的类作为filter
的输入,而不是作为类的实际成员。
如何只使用一个val
?
答案 0 :(得分:2)
只需从val
中移除anyNumber
,它就不会是该类的成员。也许你会发现这有用:scala class constructor parameters
答案 1 :(得分:1)
您最好使用Factory模式将数据表示与构造函数逻辑分开。
数据表示
scala> case class OnlyLikesSingleDigits(digits: Seq[Int])
厂
object DigitsMaker {
def apply(anyNums: Seq[Int]) = OnlyLikesSingleDigits(anyNums.filter(_ < 10))
}
用法
scala> val r = DigitsMaker(Seq(4, 12, 5, 76))
r: OnlyLikesSingleDigits = OnlyLikesSingleDigits(List(4, 5))