加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 09:53:43 所属栏目:安全 来源:网络整理
导读:我是一名正在研究 Scala的Haskeller.我遇到的不是代码,而是导入/包. 我有两个文件,Test.scala和Lists.scala. // Lists.scalapackage problemsobject Lists { def last(list: List[Any]): Option[Any] = list match { case Nil = None case x :: Nil = Some(x
我是一名正在研究 Scala的Haskeller.我遇到的不是代码,而是导入/包.

我有两个文件,Test.scala和Lists.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,5))

然而,重写为Lists.last使其成功.这不是打败导入问题的重点._通配符?我注意到数学函数可以在没有前面的数学的情况下编写.通过导入math._.为什么这对我的文件也不起作用?

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

解决方法

Doesn’t that defeat the point of the import problems._ wildcard?

不,不是的.通过使用通配符,您将该包中的所有类/对象放入范围,而不是其内容.

I notice that math functions can be written without a preceding math. by doing import math._ Why won’t this work for my files as well?

它会工作,但你需要一个适当的导入:import problems.Lists._.否则,您可以将功能放入package object.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读