Skip to content

Commit a1a4198

Browse files
authored
modify Chinese version according to English Version for num 5 and num 6 (#2567)
* modify Chinese version according to English Version for num 5 and num 6 * corrected tables mistake in num 5
1 parent 900c5cd commit a1a4198

File tree

2 files changed

+182
-12
lines changed

2 files changed

+182
-12
lines changed

_zh-cn/overviews/scala3-book/taste-hello-world.md

Lines changed: 152 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,43 @@ permalink: "/zh-cn/scala3/book/:title.html"
1313
---
1414

1515

16-
Scala 3 “Hello, world!” 例子展示如下。
16+
> **提示**:在以下示例中,尝试选择您喜欢的 Scala 版本。
17+
> <noscript>><span style="font-weight: bold;">信息</span>:JavaScript 当前已禁用,代码选项卡仍将正常工作,但首选项不会被记住。</noscript>
18+
19+
## 你的第一个 Scala 程序
20+
21+
Scala “Hello, world!” 例子展示如下。
1722
首先,把以下代码写入 _Hello.scala_:
1823

24+
<!-- Display Hello World for each Scala Version -->
25+
{% tabs hello-world-demo class=tabs-scala-version %}
26+
27+
{% tab 'Scala 2' for=hello-world-demo %}
28+
```scala
29+
object hello {
30+
def main(args: Array[String]) = {
31+
println("Hello, World!")
32+
}
33+
}
34+
```
35+
> 代码中,在名为 `hello` 的 Scala `object` 中,我们定义了一个名称为 `main` 的方法。
36+
> 在 Scala 中 `object` 类似 `class`,但定义了一个可以传递的单例实例。
37+
> `main` 用名为 `args` 的输入参数,该参数必须是 `Array[String]` 类型(暂时忽略 `args`)。
38+
39+
{% endtab %}
40+
41+
{% tab 'Scala 3' for=hello-world-demo %}
1942
```scala
20-
@main def hello() = println("Hello, world!")
43+
@main def hello() = println("Hello, World!")
2144
```
45+
> 代码中, `hello` 是方法。
46+
> 它使用 `def` 定义,并用 `@main` 注释的手段把它声明为“main”方法。
47+
> 使用 `println` 方法,它在标准输出 (STDOUT)中打印了 `"Hello, world!"` 字符串。
2248
23-
代码中, `hello` 是方法。
24-
它使用 `def` 定义,并用 `@main` 注释的手段把它声明为“main”方法。
25-
使用 `println` 方法,它在标准输出 (STDOUT)中打印了 `"Hello, world!"` 字符串。
49+
{% endtab %}
50+
51+
{% endtabs %}
52+
<!-- End tabs -->
2653

2754
下一步,用 `scalac` 编译代码:
2855

@@ -32,15 +59,32 @@ $ scalac Hello.scala
3259

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

62+
<!-- Display Hello World compiled outputs for each Scala Version -->
63+
{% tabs hello-world-outputs class=tabs-scala-version %}
64+
65+
{% tab 'Scala 2' for=hello-world-outputs %}
66+
```bash
67+
$ ls -1
68+
hello$.class
69+
hello.class
70+
hello.scala
71+
```
72+
{% endtab %}
73+
74+
{% tab 'Scala 3' for=hello-world-outputs %}
3575
```bash
3676
$ ls -1
37-
Hello$package$.class
38-
Hello$package.class
39-
Hello$package.tasty
40-
Hello.scala
77+
hello$package$.class
78+
hello$package.class
79+
hello$package.tasty
80+
hello.scala
4181
hello.class
4282
hello.tasty
4383
```
84+
{% endtab %}
85+
86+
{% endtabs %}
87+
<!-- End tabs -->
4488

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

@@ -55,4 +99,103 @@ Hello, world!
5599

56100
> [Scala 工具][scala_tools] 章节中可以找到 sbt 和其他使 Scala 开发更容易的工具相关的更多信息。
57101
102+
## 要求用户输入
103+
104+
在下一个示例中,让我们在问候用户之前询问用户名!
105+
106+
有几种方法可以从命令行读取输入,但一种简单的方法是使用
107+
_scala.io.StdIn_ 对象中的 `readline` 方法。要使用它,您需要先导入它,如下所示:
108+
109+
{% tabs import-readline %}
110+
{% tab 'Scala 2 and 3' for=import-readline %}
111+
```scala
112+
import scala.io.StdIn.readLine
113+
```
114+
{% endtab %}
115+
{% endtabs %}
116+
117+
为了演示其工作原理,让我们创建一个小示例。将此源代码放在名为 _helloInteractive.scala_ 的文件里:
118+
119+
<!-- Display interactive Hello World application for each Scala Version -->
120+
{% tabs hello-world-interactive class=tabs-scala-version %}
121+
122+
{% tab 'Scala 2' for=hello-world-interactive %}
123+
```scala
124+
import scala.io.StdIn.readLine
125+
126+
object helloInteractive {
127+
128+
def main(args: Array[String]) = {
129+
println("Please enter your name:")
130+
val name = readLine()
131+
132+
println("Hello, " + name + "!")
133+
}
134+
135+
}
136+
```
137+
{% endtab %}
138+
139+
{% tab 'Scala 3' for=hello-world-interactive %}
140+
```scala
141+
import scala.io.StdIn.readLine
142+
143+
@main def helloInteractive() =
144+
println("Please enter your name:")
145+
val name = readLine()
146+
147+
println("Hello, " + name + "!")
148+
```
149+
{% endtab %}
150+
151+
{% endtabs %}
152+
<!-- End tabs -->
153+
154+
在此代码中,我们将 `readLine` 的结果保存到一个名为 `name` 的变量中,然后
155+
使用字符串上的 `+` 运算符将 `“Hello, ”``name``"!"` 连接起来,生成单一字符串值。
156+
157+
> 您可以通过阅读[变量和数据类型](/zh-cn/scala3/book/taste-vars-data-types.html)来了解有关使用 `val` 的更多信息。
158+
159+
然后使用 `scalac` 编译代码:
160+
161+
```bash
162+
$ scalac helloInteractive.scala
163+
```
164+
165+
然后用 `scala helloInteractive` 运行它,这次程序将在询问您的名字后暂停并等待,
166+
直到您键入一个名称,然后按键盘上的回车键,如下所示:
167+
168+
```bash
169+
$ scala helloInteractive
170+
Please enter your name:
171+
172+
```
173+
174+
当您在提示符下输入您的姓名时,最终的交互应如下所示:
175+
176+
```bash
177+
$ scala helloInteractive
178+
Please enter your name:
179+
Alvin Alexander
180+
Hello, Alvin Alexander!
181+
```
182+
183+
### 关于导入的说明
184+
185+
正如您在此应用程序中看到的,有时某些方法或我们稍后将看到的其他类型的定义不可用,
186+
除非您使用如下所示的 `导入` 子句:
187+
188+
{% tabs import-readline-2 %}
189+
{% tab 'Scala 2 and 3' for=import-readline-2 %}
190+
```scala
191+
import scala.io.StdIn.readLine
192+
```
193+
{% endtab %}
194+
{% endtabs %}
195+
196+
导入可通过多种方式帮助您编写代码:
197+
- 您可以将代码放在多个文件中,以帮助避免混乱,并帮助导航大型项目。
198+
- 您可以使用包含有用功能的代码库,该库可能是由其他人编写
199+
- 您可以知道某个定义的来源(特别是如果它没有写入当前文件)。
200+
58201
[scala_tools]: {% link _zh-cn/overviews/scala3-book/scala-tools.md %}

_zh-cn/overviews/scala3-book/taste-repl.md

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,46 +16,73 @@ permalink: "/zh-cn/scala3/book/:title.html"
1616
Scala REPL(“Read-Evaluate-Print-Loop”)是一个命令行解释器,您可以将其用作“游乐场”区域来测试 Scala 代码。
1717
你可以通过运行 `scala``scala3` 命令来启动一个 REPL 会话,具体取决于您在操作系统命令行中的安装,您将看到如下所示的“欢迎”提示:
1818

19+
{% tabs command-line class=tabs-scala-version %}
20+
21+
{% tab 'Scala 2' for=command-line %}
22+
```bash
23+
$ scala
24+
Welcome to Scala {{site.scala-version}} (OpenJDK 64-Bit Server VM, Java 1.8.0_342).
25+
Type in expressions for evaluation. Or try :help.
26+
27+
scala> _
28+
```
29+
{% endtab %}
30+
31+
{% tab 'Scala 3' for=command-line %}
1932
```bash
2033
$ scala
21-
Welcome to Scala 3.0.0 (OpenJDK 64-Bit Server VM, Java 11.0.9).
22-
Type in expressions for evaluation.
23-
Or try :help.
34+
Welcome to Scala {{site.scala-3-version}} (1.8.0_322, Java OpenJDK 64-Bit Server VM).
35+
Type in expressions for evaluation. Or try :help.
2436

2537
scala> _
2638
```
39+
{% endtab %}
40+
41+
{% endtabs %}
2742

2843
REPL 是一个命令行解释器,所以它就在那里等着你输入一些东西。
2944
现在您可以输入 Scala 表达式来查看它们是如何工作的:
3045

46+
{% tabs expression-one %}
47+
{% tab 'Scala 2 and 3' for=expression-one %}
3148
````
3249
scala> 1 + 1
3350
val res0: Int = 2
3451
3552
scala> 2 + 2
3653
val res1: Int = 4
3754
````
55+
{% endtab %}
56+
{% endtabs %}
3857

3958
如输出所示,如果您不为表达式的结果分配变量,REPL 会为您创建名为 `res0``res1` 等的变量。
4059
您可以在后续表达式中使用这些变量名称:
4160

61+
{% tabs expression-two %}
62+
{% tab 'Scala 2 and 3' for=expression-two %}
4263
````
4364
scala> val x = res0 * 10
4465
val x: Int = 20
4566
````
67+
{% endtab %}
68+
{% endtabs %}
4669

4770
请注意,REPL 输出还显示了表达式的结果。
4871

4972
您可以在 REPL 中运行各种实验。
5073
这个例子展示了如何创建然后调用一个 `sum` 方法:
5174

75+
{% tabs expression-three %}
76+
{% tab 'Scala 2 and 3' for=expression-three %}
5277
````
5378
scala> def sum(a: Int, b: Int): Int = a + b
5479
def sum(a: Int, b: Int): Int
5580
5681
scala> sum(2, 2)
5782
val res2: Int = 4
5883
````
84+
{% endtab %}
85+
{% endtabs %}
5986

6087
如果您更喜欢基于浏览器的游乐场环境,也可以使用 [scastie.scala-lang.org](https://scastie.scala-lang.org)
6188

0 commit comments

Comments
 (0)