我最近在学习scala
,scala
中的包裹让我很困惑。
我有一个名为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)
}
}
}
然后我想在同一文件夹中的StockPriceFinder
中使用test.scala
:
val symbolAndUnits = StockPriceFinder.getTickersAndUnits
但是当我使用scala test.scala
运行时,我收到错误:error: not found: value StockPriceFinder
。在Java中,如果这两个源文件在同一个文件夹中,我不需要导入,我可以直接使用它,那么如何在scala中正确导入StockPriceFinder
?
我尝试在import StockPriceFinder
中使用test.scala
,但它仍无效。
答案 0 :(得分:2)
如果文件位于同一个包(不是文件夹)中,则不需要import StockPriceFinder
。
但您需要首先编译StockPriceFinder.scala
并将正确的类路径传递给scala
。
scalac StockPriceFinder.scala
scala -cp . test.scala
应该工作(可能有点偏离)。但是,你不应该手动操作,因为它很快就无法管理;使用SBT或其他构建工具(Maven,Gradle)。