scala - Intellij-idea 中的 scala 类、脚本和工作表有什么区别?

标签 scala intellij-idea sbt scala-script

我正在使用 Intellij-idea 进行 scala 编程(带有 sbt 插件)。

我想知道 scala 类、scala 脚本和 scala 工作表之间有什么区别。我们什么时候使用它们?

如果你能通过一个简单的例子来解释它,那就太好了。

谢谢

最佳答案

运行 scala 代码有不同的方式:

首先用你的类创建一个程序,就像在java中一样,我使用对象,因为它不需要实例化就可以很好地工作,就像静态一样,只需使用SBT编译并运行它,你也可以使用scala解释器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/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解释器执行这个文件,你不需要实例化对象或类,只是像shell脚本一样执行,你也可以直接从Intellij执行,但我使用系统上安装了scala的控制台

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

最后,工作表是最强大的,我推荐它来提高你的工作效率,因为它很容易测试,就像 REPL 一样,它评估 scala 表达式并向你显示结果

以下是关于 scala 工作表的官方 github repo wiki 的摘录

工作表是一个 Scala 文件,在保存时进行计算,每个表达式的结果显示在程序右侧的列中。工作表就像增强版的 REPL session ,并享受一流的编辑器支持:完成、超链接、键入时交互式错误、自动格式等。

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

然后是一个捕获,显示您在 Intellij 中使用工作表类和脚本控制台

Capture working environment

关于scala - Intellij-idea 中的 scala 类、脚本和工作表有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29600131/

相关文章:

java - 如何更改 IntelliJ IDEA 中 for 循环声明中变量的颜色?

maven - 使用本地代理从受密码保护的 Nexus 存储库下载依赖项

scala - 将 SBT 变量写入资源

sbt - sbt程序集:重复数据删除module-info.class

scala - 返回类型取决于 Scala 中的输入类型的通用函数?

inheritance - 在 Scala 中调用父类(super class)构造函数的正确方法是什么?

scala - 时间段后的Scala智能缩进

java - 如何将 AIDE 项目导入 IntelliJ?

java - Spark 1.5.2 和 SLF4J StaticLoggerBinder

eclipse - 如何在 Scala IDE 中导入所有未导入的类?