【问题标题】:how to import a class in scala如何在scala中导入一个类
【发布时间】:2015-05-23 11:23:44
【问题描述】:

我最近在学习scalascala中的包让我很困惑。

我有一个名为StockPriceFinder.scala的文件:

// StockPriceFinder.scala
object StockPriceFinder {
    def getTickersAndUnits() = {
        val stockAndUnitsXML = scala.xml.XML.load("stocks.xml")

        (Map[String, Int]() /: (stocksAndUnitsXML \ "symbol")) {
            (map, symbolNode) => 
                val ticker = (symbolNode \ "@ticker").toString
                val units = (symbolNode \ "units").text.toInt
                map ++ Map(ticker -> units)
        }
    }
}

然后我想在同一文件夹中的test.scala 中使用StockPriceFinder

val symbolAndUnits = StockPriceFinder.getTickersAndUnits

但是当我使用scala test.scala 运行它时,我得到了错误:error: not found: value StockPriceFinder。在Java中,如果这两个源文件在同一个文件夹,我不需要导入直接使用,那么如何在scala中正确导入StockPriceFinder

我曾尝试在test.scala 中使用import StockPriceFinder,但还是不行。

【问题讨论】:

  • Scala, importing class 的可能重复项
  • @LionelPort 我曾尝试在test.scala 中使用import StockPriceFinder,但还是不行

标签: scala import package


【解决方案1】:

如果文件在同一个(不是文件夹)中,则不需要import StockPriceFinder

但您确实需要先编译 StockPriceFinder.scala 并将正确的类路径传递给 scala

scalac StockPriceFinder.scala
scala -cp . test.scala

应该可以工作(可能有点过)。但是,您不应该手动操作,因为它很快就会变得难以管理;使用SBT 或其他构建工具(Maven、Gradle)。

【讨论】:

  • 如果我不需要StockPriceFinder,我只需使用scala test.scala,它会正常运行而无需编译。那么,如果我在其他地方引用这个文件,是否需要编译该文件?
  • 它不会“不编译就运行”,scala 只是负责为您编译它。但它不知道应该从哪里得到StockPriceFinder
猜你喜欢
  • 2016-04-05
  • 1970-01-01
  • 2017-07-02
  • 2020-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 2019-08-21
相关资源
最近更新 更多