跳到主要内容

Scala CLI

Dependencies

Dependencies and compiler options need to be defined before you start the REPL session.

Option 1: define dependencies when starting the REPL session

$ scala-cli repl --dep org.typelevel::cats-core:2.12.0 --dep org.typelevel::cats-effect:3.5.4

scala> import cats.syntax.all.*

scala> val someInt: Option[Int] = Some(3)
val someInt: Option[Int] = Some(3)

scala> val someLong: Option[Long] = Some(4L)
val someLong: Option[Long] = Some(4)

scala> someInt. map2(someLong)((i, l) => i. toString + l. toString)
val res0: Option[String] = Some(34)

Option 2: define dependencies in a file

The dependencies are defined in the file dep.scala:

//> using dep org.typelevel::cats-core:2.12.0
//> using dep org.typelevel::cats-effect:3.5.4
//> using dep org.scalatest::scalatest:3.2.19

Then start the REPL session and play:

$ scala-cli repl test.scala

scala> import cats.syntax.all.*

scala> val someInt: Option[Int] = Some(3)
val someInt: Option[Int] = Some(3)

scala> val someLong: Option[Long] = Some(4L)
val someLong: Option[Long] = Some(4)

scala> someInt. map2(someLong)((i, l) => i. toString + l. toString)
val res0: Option[String] = Some(34)

You can define the dependencies and Scala code in the same file and run it:

//> using dep org.typelevel::cats-core:2.12.0
//> using dep org.typelevel::cats-effect:3.5.4

@main def main = {
import cats.syntax.all.*

val someInt: Option[Int] = Some(3)
val someLong: Option[Long] = Some(4L)

val res = someInt.map2(someLong)((i, l) => i.toString + l.toString)
println(res)
}

Then run the file:

$ scala-cli run test.scala