我是 Scala 的新手,但我是一位经验丰富的程序员,试图摆脱旧习惯并采用函数式风格。我正在设计的一个简单程序涉及问题/答案对象,并保留了一些关于成功的基本事实。仅使用不可变对象就足够简单了——但我的部分目标是链接相关的事实,因此程序可能会不时地询问它们彼此相邻。(例如:“Knight Rider Car 是什么?”、“什么电视节目以 Impala 为主角?)
在 Java 中,我可能刚刚链接了如下所示的关联对象,但是不可变的法律阻止了这种情况(我不能链接 A-> B 并实例化 B -> A,除非我一次性完成?)
而且我必须承认,这可能是一件好事——也许函数式风格就是为了防止这种循环引用而设计的。但我不知道如何纠正这个问题。一旦提出问题,我的设计就会失败 - 因为这会返回一个具有“正确,询问”新值的副本对象,因此对象链接似乎又是一个陷阱。我最好的猜测是在辅助对象中构建关系集,仅基于 Q/A 数据,但我想避免处理单独的数据模式对象。
谢谢大家-俄亥俄州哥伦布市的蒂姆
case class FactItem (
q:String, a:String,
right: Double = 0.0,
asked: Double = 0.0,
linked: List[FactItem] = List[FactItem]()
) {
def rP = right / asked //right per
def subLink( l:List[FactItem] ) : FactItem = {
this.copy( linked = l-this)
}