Intellij-idea 中的 scala 类、脚本和工作表有什么区别?
What is the difference between scala classes, scripts and worksheets in Intellij-idea?
我正在使用 Intellij-idea 进行 scala 编程(使用 sbt 插件)。
我想知道 scala 类、scala 脚本和 scala 工作表之间的区别。我们什么时候使用它们?
如果你能用一个简单的例子来解释,那就太好了。
谢谢
您有不同的 运行ning scala 代码方式:
首先用你的 classes 创建一个程序,就像在 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 !!
使用activator/SBT
编译并运行配置它
> compile
[info] Compiling 1 Scala source to /home/anquegi/Dev/Whosebug/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解释器执行这个文件,你不需要实例化对象或类,就像一个shell脚本一样执行,你也可以直接从Intellij执行,但我使用控制台系统上安装了 scala
[anquegi@localhost scalaStack]$ scala src/main/scala/scriptworksheet/HelloScript.scala
Hello, Scala !!
最后,作品sheet 是最强大的,我推荐它来提高你的工作效率,因为它很容易测试,就像 REPL,它会评估 scala 表达式并向你展示结果
以下是官方 github repo wiki 关于 scala 工作的摘录sheet
作品sheet 是在保存时计算的 Scala 文件,每个表达式的结果显示在程序右侧的一列中。工作sheets 就像打了类固醇的 REPL 会话,并享受第一个 class 编辑器支持:完成、超链接、交互式错误输入、自动格式等。
// 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 作品 sheet 和 Intellij
脚本控制台的截图
Scala 工作表
它与 Scala Interpreter (REPL)相同,但在 IntelliJ 中运行。您可以在其中轻松快速地评估某些表达式。查看 IntelliJ confluence 页面了解更多信息。
Scala 脚本
如果您不想在 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。
Classes & Object
Scala 的简短回答 classes 它类似于 POJO 和 Scala Objects 它是一个 Java 单例 class.
我正在使用 Intellij-idea 进行 scala 编程(使用 sbt 插件)。
我想知道 scala 类、scala 脚本和 scala 工作表之间的区别。我们什么时候使用它们?
如果你能用一个简单的例子来解释,那就太好了。
谢谢
您有不同的 运行ning scala 代码方式:
首先用你的 classes 创建一个程序,就像在 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 !!
使用activator/SBT
编译并运行配置它> compile
[info] Compiling 1 Scala source to /home/anquegi/Dev/Whosebug/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解释器执行这个文件,你不需要实例化对象或类,就像一个shell脚本一样执行,你也可以直接从Intellij执行,但我使用控制台系统上安装了 scala
[anquegi@localhost scalaStack]$ scala src/main/scala/scriptworksheet/HelloScript.scala
Hello, Scala !!
最后,作品sheet 是最强大的,我推荐它来提高你的工作效率,因为它很容易测试,就像 REPL,它会评估 scala 表达式并向你展示结果
以下是官方 github repo wiki 关于 scala 工作的摘录sheet
作品sheet 是在保存时计算的 Scala 文件,每个表达式的结果显示在程序右侧的一列中。工作sheets 就像打了类固醇的 REPL 会话,并享受第一个 class 编辑器支持:完成、超链接、交互式错误输入、自动格式等。
// 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 作品 sheet 和 Intellij
脚本控制台的截图Scala 工作表
它与 Scala Interpreter (REPL)相同,但在 IntelliJ 中运行。您可以在其中轻松快速地评估某些表达式。查看 IntelliJ confluence 页面了解更多信息。
Scala 脚本
如果您不想在 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。
Classes & Object
Scala 的简短回答 classes 它类似于 POJO 和 Scala Objects 它是一个 Java 单例 class.