Scala导入问题 - 错误:未找到:值

时间:2014-04-06 23:38:45

标签: scala import package

我是一名正在研究Scala的Haskeller。我遇到了挫折,不是代码,而是导入/包。

我有两个文件,Test.scalaLists.scala

// Lists.scala
package problems

object Lists {
  def last(list: List[Any]): Option[Any] = list match {
    case Nil      => None
    case x :: Nil => Some(x)
    case _ :: xs  => last(xs)
  }
}

// Test.scala
import problems._

object Test extends App {
  println("Starting tests...")
  println(last(List(1,2,3,4,5)))
}

Test.scala无法编译。运行scalac Test.scala Lists.scala会产生:

Test.scala:5: error: not found: value last
  println(last(List(1,2,3,4,5))

然而将last重写为Lists.last会使其成功。这不是打败了import problems._通配符的意思吗?我注意到,通过执行math.,可以在没有前面import math._的情况下编写数学函数。为什么这对我的文件也不起作用?

真正的目标:我只想创建一个包,然后在另一个文件中使用println轻松测试其功能。最好的方法是什么?我是否可以取消object {...}中的Test.scala并使用scala运行它,放弃编译过程?

1 个答案:

答案 0 :(得分:9)

  

不能解决导入问题._通配符?

不,它没有。通过使用通配符,您可以将该包中的所有类/对象放入范围,但不是其内容

  

我注意到数学函数可以在没有前面的math.的情况下编写import math._为什么我的文件也能胜任这项工作?

它会起作用,但您需要正确导入:import problems.Lists._。否则,您可以将功能放入package object