Scala 将配套样板文件封装在注释+;宏

Scala 将配套样板文件封装在注释+;宏,scala,macros,algebraic-data-types,scala-2.11,companion-object,Scala,Macros,Algebraic Data Types,Scala 2.11,Companion Object,我使用的ADT应该只能在验证步骤之后构建(这是FP中确保正确性的常见做法)。例如,我在Double上使用了一个Score类型,它验证了它的包装值是否在[0.01000.0]之内 所以我有这样的想法: case class Score private(raw: Double) extends AnyVal object Score { def mk(raw: Double) = (0 <= raw && raw <= 100) option new Score(ra

我使用的ADT应该只能在验证步骤之后构建(这是FP中确保正确性的常见做法)。例如,我在
Double
上使用了一个
Score
类型,它验证了它的包装值是否在[0.01000.0]之内

所以我有这样的想法:

case class Score private(raw: Double) extends AnyVal
object Score {
  def mk(raw: Double) = (0 <= raw && raw <= 100) option new Score(raw)

  // XXX: WOULD LIKE TO GET RID OF THIS LINE:
  def apply(raw: Double)(implicit ev: DummyImplicit): Score = ???
}
我尝试过使用继承,但没有用

是否可以使用宏实现这一点,或者Scala宏目前不支持向类/对象添加方法?比如:

case class Score private(raw: Double) extends AnyVal
@guarded object Score {
  def mk(raw: Double) = (0 <= raw && raw <= 100) option new Score(raw)
}
case class Score private(原始:双精度)扩展AnyVal
@防护物得分{
def mk(原始:双精度)=(0
case class Score private(raw: Double) extends AnyVal
@guarded object Score {
  def mk(raw: Double) = (0 <= raw && raw <= 100) option new Score(raw)
}