【发布时间】:2012-11-23 17:58:52
【问题描述】:
对不起,我是 Scala 新手。 我有一个抽象类和一个从抽象类继承并实现其字段的具体类。
abstract class Element {
var name: String
var description: String
}
class ConcreteElement (var name: String, var description: String)extends Element
这是对的吗?是的? 我有许多从抽象类 Element 继承的类。 现在我想检查变量名称,我只想根据某些约束实例化名称。我把这个控件放在哪里?显然在抽象类Element中。
在 Scala 中变量声明 var x:T 等价于声明一个 getter 函数 x 和一个 setter 函数 x_=,定义如下:
def x: T
def x_= (y: T): Unit
所以我决定以这种方式声明变量,并将我的约束放在 getter 方法名称中。
abstract class Element {
def name: String
def name_= (y: String): Unit = {CONSTRAINT}
var description: String
}
类 ConcreteElement (var name: String, var description: String) 扩展元素
这个推理正确吗? ConcreteElement 居然实现了 Element 的字段?
【问题讨论】:
-
您的上下文中真的需要可变字段(变量)吗?
-
有些字段是 String 类型,而有些字段是 Set(something) 类型。我认为没有必要使用var。但是如果我不使用var,我如何在方法setter上设置约束
标签: scala parameters constraints