Scala 3 — Book

Hello, World!

Language

提示:在以下示例中,尝试选择您喜欢的 Scala 版本。

你的第一个 Scala 程序

Scala “Hello, world!” 例子展示如下。 首先,把以下代码写入 Hello.scala:

object hello {
  def main(args: Array[String]) = {
    println("Hello, World!")
  }
}

代码中,在名为 hello 的 Scala object 中,我们定义了一个名称为 main 的方法。 在 Scala 中 object 类似 class,但定义了一个可以传递的单例实例。 main 用名为 args 的输入参数,该参数必须是 Array[String] 类型(暂时忽略 args)。

@main def hello() = println("Hello, World!")

代码中, hello 是方法。 它使用 def 定义,并用 @main 注释的手段把它声明为“main”方法。 使用 println 方法,它在标准输出 (STDOUT)中打印了 "Hello, world!" 字符串。

下一步,用 scalac 编译代码:

$ scalac Hello.scala

如果你是从 Java 转到 Scala,scalac 就像 javac,所以该命令会创建几个文件:

$ ls -1
hello$.class
hello.class
hello.scala
$ ls -1
hello$package$.class
hello$package.class
hello$package.tasty
hello.scala
hello.class
hello.tasty

与 Java 一样,.class 文件是字节码文件,它们已准备好在 JVM 中运行。

现在您可以使用 scala 命令运行 hello 方法:

$ scala hello
Hello, world!

假设它运行成功,那么恭喜,您刚刚编译并运行了您的第一个 Scala 应用程序。

Scala 工具 章节中可以找到 sbt 和其他使 Scala 开发更容易的工具相关的更多信息。

要求用户输入

在下一个示例中,让我们在问候用户之前询问用户名!

有几种方法可以从命令行读取输入,但一种简单的方法是使用 scala.io.StdIn 对象中的 readline 方法。要使用它,您需要先导入它,如下所示:

import scala.io.StdIn.readLine

为了演示其工作原理,让我们创建一个小示例。将此源代码放在名为 helloInteractive.scala 的文件里:

import scala.io.StdIn.readLine

object helloInteractive {

  def main(args: Array[String]) = {
    println("Please enter your name:")
    val name = readLine()

    println("Hello, " + name + "!")
  }

}
import scala.io.StdIn.readLine

@main def helloInteractive() =
  println("Please enter your name:")
  val name = readLine()

  println("Hello, " + name + "!")

在此代码中,我们将 readLine 的结果保存到一个名为 name 的变量中,然后 使用字符串上的 + 运算符将 “Hello, ”name"!" 连接起来,生成单一字符串值。

您可以通过阅读[变量和数据类型](/zh-cn/scala3/book/taste-vars-data-types.html)来了解有关使用 val 的更多信息。

然后使用 scalac 编译代码:

$ scalac helloInteractive.scala

然后用 scala helloInteractive 运行它,这次程序将在询问您的名字后暂停并等待, 直到您键入一个名称,然后按键盘上的回车键,如下所示:

$ scala helloInteractive
Please enter your name:
▌

当您在提示符下输入您的姓名时,最终的交互应如下所示:

$ scala helloInteractive
Please enter your name:
Alvin Alexander
Hello, Alvin Alexander!

关于导入的说明

正如您在此应用程序中看到的,有时某些方法或我们稍后将看到的其他类型的定义不可用, 除非您使用如下所示的 导入 子句:

import scala.io.StdIn.readLine

导入可通过多种方式帮助您编写代码:

  • 您可以将代码放在多个文件中,以帮助避免混乱,并帮助导航大型项目。
  • 您可以使用包含有用功能的代码库,该库可能是由其他人编写
  • 您可以知道某个定义的来源(特别是如果它没有写入当前文件)。

Contributors to this page: