0
这是一个后续问题要Scala constructor overload?我想的是,输入等覆盖的限制形式运行的情况下类的构造函数,而不是重载的构造器:随访约斯卡拉构造oveloading
abstract class Expr
case class RegExpr(regex : Regex) extends Expr {
override def this(regex : Regex) = {
if (regex.toString contains "*")
throw new Exception("Restricted class of regular expressions: cannot contain Kleene star.")
else if (regex.toString contains "|")
throw new Exception("Restricted class of regular expressions: cannot contain disjunction.")
else this(regex)
}
}
这不编译;我已经尝试了几次不同的迭代,但他们都回到编译器告诉我它期望'this',但是'if'被找到。我如何得到我想要的行为?
太好了,谢谢!这似乎改善了事情。 – etosch
'require(!regex.toString.contains(“*”),“...”)'是更惯用的参数测试。 – senia
此外,最后的其他是不必要的。 – yakshaver