调用伴随对象中的方法

时间:2016-03-18 22:46:15

标签: scala

我是学习scala的新手,并且正在深入研究 Scala中的函数编程这本书。我正在研究如何测试我的练习解决方案的一些概念和编程问题,这些问题与如何正确调用伴随对象中定义的方法有关。

我有以下数据类型control.CreateGraphics以及本书

Paint

我想在随播对象中测试方法e.GraphicsMyListsealed trait MyList[+A] case object Nil extends MyList[Nothing] case class Cons[+A](head: A, tail: MyList[A]) extends MyList[A] object MyList { def apply[A](as: A*): MyList[A] = { if (as.isEmpty) Nil else Cons(as.head, apply(as.tail: _*)) } def sum(ints: MyList[Int]): Int = ints match { case Nil => 0 case Cons(x, xs) => x + sum(xs) } def product(ds: MyList[Double]): Double = ds match { case Nil => 1 case Cons(x, xs) => x * product(xs) } } 的实现。为此,我在对象定义

之后将以下行(这些行)添加到文件中
apply

如果我运行这些(我是一个命令行类型的人,所以这是一个bash shell会话)它似乎按照我的预期工作

sum

但是我遇到了其他两个功能的问题。我尝试了以下组合

product

他们都给我错误。例如,我认为最有可能工作的val x = MyList(1, 2, 3, 4) println(x) 给出了

$ scala ch3-list.scala
Cons(1,Cons(2,Cons(3,Cons(4,Nil))))

我是scala的新手,也没有java经验,因此范围规则对我来说仍然模糊。我想在概念上知道我在这里缺少什么,并获得一些关于设置测试此类方法的最佳工作流程的建议。

1 个答案:

答案 0 :(得分:2)

您正在寻找address_book_id

MyList.sum(x)方法位于随播对象中,未定义为sum类的成员。

相关问题