The REPL, scala-cli & Your First Program
Useful commands: :type expr, :doc, :imports, :load file.scala, :reset, :quit.
3.1 The REPL
Useful commands: :type expr, :doc, :imports, :load file.scala, :reset, :quit.
$ scala
scala> 1 + 2
val res0: Int = 3
scala> val name = "Scala"
val name: String = Scala
scala> :type name
String
scala> :help
scala> :quit3.2 Hello World (Scala 3)
With arguments:
@main def hello(): Unit =
println("Hello, World!")scala run hello.scala@main def greet(name: String, times: Int): Unit =
for _ <- 1 to times do println(s"Hello, $name!")scala run greet.scala -- Ann 33.3 Hello World (Scala 2 style — still valid)
Also: object Hello extends App { println("Hi") } (Scala 2; discouraged in Scala 3).
object Hello {
def main(args: Array[String]): Unit = {
println("Hello, World!")
}
}3.4 scala-cli scripts with dependencies
.sc files are scripts: top-level statements run directly.
//> using scala 3.7
//> using dep com.lihaoyi::os-lib:0.11.3
//> using dep com.lihaoyi::upickle:4.1.0
@main def run(): Unit =
val files = os.list(os.pwd).map(_.last)
println(upickle.default.write(files))scala run script.scala
scala test . # run tests
scala package . --assembly # fat JAR
scala --power package . --native-image # GraalVM native image3.5 Comments
// single-line comment
/* multi-line
comment */
/** Scaladoc comment
* @param x description
* @return description
*/