如何在 scala 中导入 class
how to import a class in scala
最近在学习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)
}
}
}
然后我想在同一文件夹中的 test.scala
中使用 StockPriceFinder
:
val symbolAndUnits = StockPriceFinder.getTickersAndUnits
但是当我 运行 它与 scala test.scala
时,我得到了错误:error: not found: value StockPriceFinder
。在Java中,如果这两个源文件在同一个文件夹中,我不需要导入,可以直接使用,那么如何在scala中正确导入StockPriceFinder
?
我试过在test.scala
中使用import StockPriceFinder
,但还是不行。
如果文件在同一个包(不是文件夹)中,则不需要import StockPriceFinder
。
但是您需要先编译 StockPriceFinder.scala
并将正确的类路径传递给 scala
。
scalac StockPriceFinder.scala
scala -cp . test.scala
应该可以工作(可能有点不对劲)。但是,您不应该手动执行此操作,因为它很快就会变得难以管理;使用 SBT 或其他构建工具(Maven,Gradle)。
最近在学习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)
}
}
}
然后我想在同一文件夹中的 test.scala
中使用 StockPriceFinder
:
val symbolAndUnits = StockPriceFinder.getTickersAndUnits
但是当我 运行 它与 scala test.scala
时,我得到了错误:error: not found: value StockPriceFinder
。在Java中,如果这两个源文件在同一个文件夹中,我不需要导入,可以直接使用,那么如何在scala中正确导入StockPriceFinder
?
我试过在test.scala
中使用import StockPriceFinder
,但还是不行。
如果文件在同一个包(不是文件夹)中,则不需要import StockPriceFinder
。
但是您需要先编译 StockPriceFinder.scala
并将正确的类路径传递给 scala
。
scalac StockPriceFinder.scala
scala -cp . test.scala
应该可以工作(可能有点不对劲)。但是,您不应该手动执行此操作,因为它很快就会变得难以管理;使用 SBT 或其他构建工具(Maven,Gradle)。