2015-03-20 5 views
0

Я изучаю 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) 
     } 
    } 
} 

, то я хочу использовать StockPriceFinder в test.scala, который находится в той же папке:

val symbolAndUnits = StockPriceFinder.getTickersAndUnits 

, но когда я запускаю его с scala test.scala, я получил ошибка: error: not found: value StockPriceFinder. В Java, если эти два исходных файла находятся в одной папке, мне не нужно импортировать, и я могу использовать его напрямую, поэтому как я могу правильно импортировать StockPriceFinder в scala?

Я попытался использовать import StockPriceFinder в test.scala, но он все еще не работает.

+0

Возможный дубликат [Scala, importing class] (http://stackoverflow.com/questions/3075951/scala-importing-class) –

+0

@ LionelPort Я попытался использовать 'import StockPriceFinder' в' test.scala', но он все еще не работает – roger

ответ

1

Вам не нужно import StockPriceFinder, если файлы находятся в одном пакете (не папка).

Прежде всего вам необходимо скомпилировать StockPriceFinder.scala и передать правильный путь к классу scala.

scalac StockPriceFinder.scala 
scala -cp . test.scala 

должен работать (может быть, немного выключен). Однако вы не должны делать это вручную, так как он становится неуправляемым очень быстро; используйте SBT или другие инструменты для сборки (Maven, Gradle).

+0

, если мне не нужен «StockPriceFinder», я просто использую 'scala test.scala', он будет работать нормально без компиляции. Итак, если мне нужно скомпилировать файл, если я отсылаю этот файл в другом месте? – roger

+0

Он не запускается без компиляции, 'scala' просто заботится о его компиляции для вас. Но он не знает, откуда он должен получить «StockPriceFinder». –

Смежные вопросы