@@ -13,16 +13,43 @@ permalink: "/zh-cn/scala3/book/:title.html"
13
13
---
14
14
15
15
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!” 例子展示如下。
17
22
首先,把以下代码写入 _ Hello.scala_ :
18
23
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 %}
19
42
``` scala
20
- @ main def hello () = println(" Hello, world !" )
43
+ @ main def hello () = println(" Hello, World !" )
21
44
```
45
+ > 代码中, ` hello ` 是方法。
46
+ > 它使用 ` def ` 定义,并用 ` @main ` 注释的手段把它声明为“main”方法。
47
+ > 使用 ` println ` 方法,它在标准输出 (STDOUT)中打印了 ` "Hello, world!" ` 字符串。
22
48
23
- 代码中, ` hello ` 是方法。
24
- 它使用 ` def ` 定义,并用 ` @main ` 注释的手段把它声明为“main”方法。
25
- 使用 ` println ` 方法,它在标准输出 (STDOUT)中打印了 ` "Hello, world!" ` 字符串。
49
+ {% endtab %}
50
+
51
+ {% endtabs %}
52
+ <!-- End tabs -->
26
53
27
54
下一步,用 ` scalac ` 编译代码:
28
55
@@ -32,15 +59,32 @@ $ scalac Hello.scala
32
59
33
60
如果你是从 Java 转到 Scala,` scalac ` 就像 ` javac ` ,所以该命令会创建几个文件:
34
61
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 %}
35
75
``` bash
36
76
$ 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
41
81
hello.class
42
82
hello.tasty
43
83
```
84
+ {% endtab %}
85
+
86
+ {% endtabs %}
87
+ <!-- End tabs -->
44
88
45
89
与 Java 一样,_ .class_ 文件是字节码文件,它们已准备好在 JVM 中运行。
46
90
@@ -55,4 +99,103 @@ Hello, world!
55
99
56
100
> 在 [ Scala 工具] [ scala_tools ] 章节中可以找到 sbt 和其他使 Scala 开发更容易的工具相关的更多信息。
57
101
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
+
58
201
[ scala_tools] : {% link _ zh-cn/overviews/scala3-book/scala-tools.md %}
0 commit comments