Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Intellij idea中scala类、脚本和工作表之间的区别是什么?_Scala_Intellij Idea_Sbt_Scala Script - Fatal编程技术网

Intellij idea中scala类、脚本和工作表之间的区别是什么?

Intellij idea中scala类、脚本和工作表之间的区别是什么?,scala,intellij-idea,sbt,scala-script,Scala,Intellij Idea,Sbt,Scala Script,我使用Intellij idea进行scala编程(使用sbt插件) 我想知道scala类、scala脚本和scala工作表之间的区别。我们什么时候使用它们 如果你能用一个简单的例子来解释,这将是非常好的 谢谢您有不同的方式运行scala代码: 首先用你的类创建一个程序,就像在java中一样,我使用object,因为它不需要实例化就可以很好地工作,就像静态的一样,只需使用SBT编译并运行它,你也可以使用scala解释器REPL 我们可以在REPL中使用这个对象 scala> object

我使用Intellij idea进行scala编程(使用sbt插件)

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

如果你能用一个简单的例子来解释,这将是非常好的


谢谢

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

首先用你的类创建一个程序,就像在java中一样,我使用object,因为它不需要实例化就可以很好地工作,就像静态的一样,只需使用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一样,ant它可以评估scala表达式并显示结果

defined module Hello





Hello Scala
res0: Unit = ()
a: Int = 9
以下是官方github repo wiki关于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
然后是一个显示您在Intellij中使用classe工作表和脚本控制台的捕获

Scala工作表 它与Scala解释器(REPL)相同,但运行在IntelliJ内部。您可以轻松快速地计算某些表达式。查看第页以了解更多信息

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
开始学这个

它类似于Scala类和Scala对象,它是一个Java单例类