What is the difference between scala classes, scripts and worksheets in Intellij-idea?

前端 未结 2 2000
南笙
南笙 2021-01-01 15:26

I\'m using Intellij-idea for scala programming (with sbt plugin).

I want to know what is the difference between scala classes, scala scripts and scala worksheets. Wh

相关标签:
2条回答
  • 2021-01-01 16:15

    You have different ways of running scala code:

    First create a Program with your classes, this is as in java, I use object because it works well without instantianing, like static, just compile with the SBT and run it you can also use the scala Interpreter REPL

    We can use this object in the REPL

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

    compiling and running it using 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
    

    The second is that if we add the scala code as a script or file Hello.scala, You can save your scala code in the file with .scala extension (basically with any file extension but prefered .scala extension) and to run, provide file name with extension as parameter to scala interpreter

    /**
     * Created by anquegi on 13/04/15.
     */
    
    println("Hello, Scala !!")
    

    if we call the scala interpreter this file is executed, you do not need to instanciate objects or clases, just executing like a shell script, you can also execute directlyy from Intellij, but I use the console with scala installed on the system

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

    And finally the worksheet is the most powerfull, I recommend this for increasing your prodductivity at work bacause it is easy to test things is like the REPL, ant it evluates the scala exprssions and shows you back the result

    Following is excerpt from official github repo wiki about the scala worksheet

    A worksheet is a Scala file that is evaluated on save, and the result of each expression is shown in a column to the right of your program. Worksheets are like a REPL session on steroids, and enjoy 1st class editor support: completion, hyperlinking, interactive errors-as-you-type, auto-format, etc.

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

    the result

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

    then a capture that shows you working with classe the work sheet and the console for scriptsin the Intellij

    Capture working environment

    0 讨论(0)
  • 2021-01-01 16:19

    Scala Worksheet

    It's the same as Scala Interpreter (REPL) but runs inside IntelliJ. Where you may easily and quickly evaluate some expressions. Check IntelliJ confluence page for more information.

    Scala Script

    If you don't want write script on Bash you can do it with Scala. It's just sequence of Scala statements.

    Example:

    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)
    }
    

    Running it:

    $ scala scala_script_name.scala
    

    To getting started pick up this guide.

    Classes & Object

    Short answer for Scala classes it's similar to POJO and Scala Objects it's a Java Singleton class.

    0 讨论(0)
提交回复
热议问题