第一个Scala程序 - Hello World #

一、使用 Scala REPL #

REPL(Read-Eval-Print-Loop)是 Scala 的交互式解释器,适合快速学习和测试。

1.1 启动 REPL #

bash
scala

输出:

text
Welcome to Scala 3.3.1 (11.0.20, Java OpenJDK 64-Bit Server VM).
Type in expressions for evaluation. Or try :help.

scala>

1.2 执行简单表达式 #

scala
scala> 1 + 2
val res0: Int = 3

scala> "Hello" + " " + "Scala"
val res1: String = Hello Scala

scala> println("Hello, World!")
Hello, World!

1.3 定义变量和函数 #

scala
scala> val name = "Scala"
val name: String = Scala

scala> def greet(name: String): String = s"Hello, $name!"
def greet(name: String): String

scala> greet("World")
val res2: String = Hello, World!

1.4 退出 REPL #

scala
scala> :quit

或使用快捷键:Ctrl + D

二、编写脚本文件 #

2.1 创建脚本文件 #

创建 hello.scala 文件:

scala
println("Hello, World!")

2.2 运行脚本 #

bash
scala hello.scala

输出:

text
Hello, World!

2.3 带参数的脚本 #

创建 args.scala

scala
args.foreach(println)

运行:

bash
scala args.scala Hello Scala

输出:

text
Hello
Scala

三、编译运行方式 #

3.1 创建源文件 #

创建 HelloWorld.scala

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

3.2 编译程序 #

bash
scalac HelloWorld.scala

编译后生成:

  • HelloWorld.class
  • HelloWorld$.class
  • HelloWorld$package.class

3.3 运行程序 #

bash
scala HelloWorld

或使用 scala -cp .

bash
scala -cp . hello

四、程序结构解析 #

4.1 Scala 3 程序结构 #

scala
@main def hello(): Unit =
  println("Hello, World!")
  • @main:主程序入口注解
  • def:定义函数的关键字
  • hello:函数名
  • (): Unit:无参数,返回类型为 Unit(类似 void)
  • =:函数体的开始
  • println(...):函数体内容

4.2 传统 main 方法 #

scala
object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("Hello, World!")
  }
}
  • object:定义单例对象
  • main:程序入口方法
  • args: Array[String]:命令行参数
  • Unit:返回类型,表示无返回值

4.3 继承 App 特质 #

scala
object HelloWorld extends App {
  println("Hello, World!")
}

五、使用 sbt 项目 #

5.1 创建项目 #

bash
mkdir hello-world
cd hello-world

5.2 创建 build.sbt #

scala
name := "hello-world"
version := "0.1.0"
scalaVersion := "3.3.1"

5.3 创建源文件 #

创建 src/main/scala/Main.scala

scala
@main def run(): Unit =
  println("Hello, World from sbt!")

5.4 运行项目 #

bash
sbt run

输出:

text
[info] running run
Hello, World from sbt!

5.5 打包项目 #

bash
sbt package

生成的 jar 包在 target/scala-3.3.1/ 目录下。

六、命令行参数 #

6.1 接收命令行参数 #

scala
@main def greet(args: String*): Unit =
  args.foreach(name => println(s"Hello, $name!"))

运行:

bash
scala run Alice Bob Charlie

输出:

text
Hello, Alice!
Hello, Bob!
Hello, Charlie!

6.2 传统方式接收参数 #

scala
object Greet {
  def main(args: Array[String]): Unit = {
    args.foreach { arg =>
      println(s"Argument: $arg")
    }
  }
}

七、输入输出 #

7.1 标准输出 #

scala
println("Hello")           // 输出并换行
print("Hello")             // 输出不换行
printf("Name: %s, Age: %d%n", "Alice", 25)  // 格式化输出

7.2 字符串插值 #

scala
val name = "Scala"
val version = 3

println(s"Hello, $name!")                    // s 插值器
println(s"2 + 2 = ${2 + 2}")                 // 表达式
println(raw"Hello\nWorld")                   // raw 插值器(不转义)
println(f"Pi is approximately $math.Pi%.2f") // f 插值器(格式化)

7.3 多行字符串 #

scala
val text = """This is a
multiline string
in Scala"""
println(text)

7.4 标准输入 #

scala
import scala.io.StdIn

print("Enter your name: ")
val name = StdIn.readLine()
println(s"Hello, $name!")

print("Enter your age: ")
val age = StdIn.readInt()
println(s"You are $age years old.")

八、使用 IDE 开发 #

8.1 IntelliJ IDEA #

  1. 创建新项目:File → New → Project
  2. 选择 Scala → sbt
  3. 输入项目名称
  4. 选择 Scala 版本
  5. 创建完成后,在 src/main/scala 下创建 Scala 文件

8.2 运行程序 #

  • 点击 main 方法旁边的绿色三角形
  • 或右键选择 “Run”

8.3 调试程序 #

  • 在代码行号旁点击设置断点
  • 右键选择 “Debug”

九、常见错误 #

9.1 缩进错误 #

scala
@main def hello(): Unit =
println("Hello")  // 错误:缩进不正确

正确写法:

scala
@main def hello(): Unit =
  println("Hello")  // 正确:正确缩进

9.2 类型不匹配 #

scala
val x: Int = "hello"  // 错误:类型不匹配

9.3 缺少等号 #

scala
def add(a: Int, b: Int)  // 错误:缺少等号
  a + b

正确写法:

scala
def add(a: Int, b: Int) =
  a + b

十、Scala 与 Java 对比 #

10.1 Hello World 对比 #

Java:

java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

Scala:

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

10.2 主要区别 #

特性 Java Scala
分号 必需 可选
main 方法定义 静态方法 @main 注解或 object
类型声明 必须显式 可推断
代码量 较多 简洁

十一、总结 #

编写 Scala 程序的方式:

  1. REPL:快速测试和学习
  2. 脚本:简单任务
  3. 编译运行:正式项目
  4. sbt 项目:大型项目

关键要点:

  • Scala 3 使用 @main 注解定义程序入口
  • 分号是可选的
  • 使用缩进表示代码块
  • 字符串插值让输出更简洁

下一步,让我们学习 Scala 基础语法

最后更新:2026-03-27