在 Scala 中,如何对类的字段进行约束?在一个包中,我有模型的域,在另一个包中,我有 dsl 来实例化我的模型。该模型的基本形式是这样的:
abstract class Element {
var name: String
var description: String
var types : Set[Type]
}
class SAComponent (var name :String,
var description : String,
var properties : Set[Property] = Set(),
var types : Set[Type] = Set(),
) extends Component
元素是我模型的根。我想对 Element 的字段施加约束,以便每个继承名称和描述以及 Element 类型的类都尊重这些约束。换句话说,我需要为这些字段定义我得到的。正确的?我应该怎么做?
我试过了,但没有遵守约束:
abstract class Element {
def name: String
def name_= (value: String): Unit = {if (isBadValue(value)throw new IllegalArgumentException
name = value
}
var description : String,
var types : Set[Type] = Set }
class Component (override var name : String, var description: String) extends Element
问题是某些必须遵守约束的字段,在具体类的构造函数中必须初始化为空值。所以“要求”对我来说不是一个好的解决方案。谢谢你们。