【发布时间】:2016-01-09 05:44:24
【问题描述】:
我正在阅读《Scala 中的函数式编程》一书,但遇到了困难。代码如下:
package fpinscala.datastructures
sealed trait List[+A]
case object Nil extends List[Nothing]
case class Cons[+A](head: A, tail: List[A]) extends List[A]
object List {
def sum(ints: List[Int]): Int = ints match {
case Nil => 0
case Cons(x,xs) => x + sum(xs)
}
def product(ds: List[Double]): Double = ds match {
case Nil => 1.0
case Cons(0.0, _) => 0.0
case Cons(x,xs) => x * product(xs)
}
def apply[A](as: A*): List[A] =
if (as.isEmpty) Nil
else Cons(as.head, apply(as.tail: _*))
val example = Cons(1, Cons(2, Cons(3, Nil)))
val example2 = List(1,2,3)
val total = sum(example)
}
代码来自第 3 章,称为“清单 3.1 单链表”。
我的问题首先是,在 IntelliJ 中使用工作表时,我从包语句中收到一条警告消息,告诉我包名称与目录结构不对应。教科书没有提供有关如何处理此问题的任何信息。这是本书第一次使用包语句,没有任何地方讨论“目录结构”。
我的第二个问题是代码不会在我希望找到的右侧产生任何“Res0”或任何东西。 Like total: Int 6 或类似的东西。任何指针,建议?
【问题讨论】:
-
虽然 scala 不需要包名和 sourcel 目录结构之间的对应关系,但是 java 语言需要,所以工作表可能假设一个 java 源代码树。
标签: scala intellij-idea