В чем разница между scala классами, сценариями и рабочими листами в Intellij-idea?

Я использую Intellij-идею для программирования scala (с плагином sbt).

Я хочу знать, в чем разница между scala классами, scala скриптами и scala рабочими листами. Когда мы используем каждый из них?

Это будет очень хорошо, если вы сможете объяснить это простым примером.

Спасибо

Ответ 1

У вас есть разные способы запуска scala code:

Сначала создайте Программу с вашими классами, это как в java, я использую объект, потому что он отлично работает без выполнения, как статический, просто компилируется с SBT и запускает его, вы также можете использовать scala Interpreter REPL

Мы можем использовать этот объект в REPL

scala>  object Hello {
     |   def main(args:Array[String]) {
     |     println("Hello, Scala !!")
     |   }
     | }
defined object Hello

scala> Hello.main(Array("onlyforwork"))
Hello, Scala !!

компиляция и запуск с использованием активатора /SBT

> compile
[info] Compiling 1 Scala source to /home/anquegi/Dev/StackOverFlow/scalaStack/target/scala-2.11/classes...
[success] Total time: 2 s, completed 13/04/2015 11:29:42
> run
[warn] Multiple main classes detected.  Run 'show discoveredMainClasses' to see the list

Multiple main classes detected, select one to run:

 [1] org.example.Hello
 [2] org.example.ScheduledTaskScala
 [3] question1.Ques
 [4] scriptworksheet.Hello

Enter number: 4

[info] Running scriptworksheet.Hello 
Hello, Scala !!
[success] Total time: 19 s, completed 13/04/2015 11:30:04

Во-вторых, если мы добавим код scala как script или файл Hello.scala, вы можете сохранить свой scala код в файле с расширением .scala(в основном с любым расширением файла, но предпочтительнее. scala) и для запуска укажите имя файла с расширением как параметр в scala интерпретатор

/**
 * Created by anquegi on 13/04/15.
 */

println("Hello, Scala !!")

если мы назовем интерпретатор scala, этот файл будет выполнен, вам не нужно создавать объекты или кластеры, просто выполняя как оболочку script, вы также можете выполнить прямо из Intellij, но я использую консоль с scala, установленный в системе

[[email protected] scalaStack]$ scala src/main/scala/scriptworksheet/HelloScript.scala 
Hello, Scala !!

И, наконец, рабочий лист является самым мощным, я рекомендую это для увеличения вашей продуктивности на работе, потому что легко проверить, что это похоже на REPL, ant он выражает exprssions scala и показывает результат

Ниже приведена выдержка из официальной вики-страницы github repo о листе scala

Рабочий лист представляет собой файл scala, который оценивается при сохранении, а результат каждого выражения показан в столбце справа от вашей программы. Рабочие листы похожи на сеанс REPL на стероидах и пользуются поддержкой редактора 1-го класса: завершение, гиперссылка, интерактивные ошибки-как-вы, автоматический формат и т.д.

// We can define objects or classes and the worksheet
//will print the sesult of every expression
object Hello {
  def main(args:Array[String]) {
    println("Hello, Scala !!")
  }
}

println("Hello Scala")
val a = 4 + 5

результат

defined module Hello





Hello Scala
res0: Unit = ()
a: Int = 9

а затем захват, который показывает, что вы работаете с классом рабочего листа и консолью для scriptsin Intellij

Capture working environment

Ответ 2

Scala Рабочий лист

Он совпадает с Scala Interpreter (REPL), но работает внутри IntelliJ. Там, где вы можете легко и быстро оценить некоторые выражения. Для получения дополнительной информации просмотрите IntelliJ confluence.

Scala Script

Если вы не хотите писать script на Bash, вы можете сделать это с помощью Scala. Это просто последовательность операторов Scala.

Пример:

import java.nio.file.{Paths, Files}

val ScalaSource = "*.scala"
val Path = "path/to/necessary/folder"

val stream = Files.newDirectoryStream(Paths.get(Path), ScalaSource)

val paths = stream.iterator
while (paths.hasNext) {
  println(paths.next.getFileName)
}

Запуск:

$ scala scala_script_name.scala

Чтобы начать работу, выберите guide.

Классы и объекты

Короткий ответ для Scala классов похож на POJO и Scala Объекты это класс Java Singleton.