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

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

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

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

Спасибо

2 ответа

Решение

У вас есть разные способы запуска Scala-кода:

Сначала создайте Программу с вашими классами, это как в 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 в виде скрипта или файла Hello.scala, вы можете сохранить свой код scala в файле с расширением.scala (в основном с любым расширением файла, но с предпочтительным расширением.scala) и запустить его, предоставив файл. имя с расширением в качестве параметра для интерпретатора scala

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

println("Hello, Scala !!")

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

[anquegi@localhost scalaStack]$ scala src/main/scala/scriptworksheet/HelloScript.scala 
Hello, Scala !!

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

Ниже приведена выдержка из официальной вики-репозитории githu b о рабочем листе scala

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

// 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

затем захват, показывающий работу с рабочим листом classe и консолью скриптов в Intellij

Захват рабочей среды

Scala Worksheet

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

Scala 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

Для начала возьмите это руководство.

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

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

Другие вопросы по тегам