找不到功能的价值

时间:2014-10-13 14:57:37

标签: scala

我是Scala的新手,我遇到了问题。 我的代码:

object testObject {

def last[A](xs:List[A]):A = 
if (xs == Nil) throw new Exception("empty") 
else (xs.reverse).head 

def main(args: Array[String]){
println("Hello, world!")
last(List(1,2,3,4))
}
}

并且解释者说:

<console>:8: error: not found: value last
            last(List(1,2,3,4))
            ^

我点击了&#34;在scala解释器中运行选择&#34;在Eclipse中

2 个答案:

答案 0 :(得分:1)

抱歉,我原本误读了你的问题。如果我只是将你的代码复制到Scala REPL中,一切似乎都运行正常。你有同样的尝试吗?

但有些一般要点:

  • 您不需要(x.reverse).headx.reverse.head也可以。
  • main的参数未在正文中使用,因此可以省略。
  • 您对last的调用将返回列表的最后一个元素,但之后不再使用它。

答案 1 :(得分:1)

适合我:

 Welcome to Scala version 2.10.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_25).
 Type in expressions to have them evaluated.
 Type :help for more information.

 scala> object testObject {
      | 
      | def last[A](xs:List[A]):A = 
      | if (xs == Nil) throw new Exception("empty") 
      | else (xs.reverse).head 
      | 
      | def main(args: Array[String]){
      | println("Hello, world!")
      | last(List(1,2,3,4))
      | }
      | }
 defined module testObject

 scala> testObject.main(new Array[String](0))
 Hello, world!

所以它必须与你如何运行它有关。我的猜测:你点击了#34;运行选择&#34;并且只选择了last的调用行。尝试将testObject类型作为主程序运行。 (在IntelliJ IDEA中,这将右键单击编辑器并选择&#34;运行&#39; testObject&#39;&#34;。不确定它在Eclipse中是如何工作的,但它不能那不同。)