Skip to content

Commit 6cfaf58

Browse files
authored
Merge pull request #2563 from artemkorsakov/NI-Scala3_book_introduction
Add first five pages of Scala3 book in russian
2 parents b3c2c67 + 0ef8e54 commit 6cfaf58

10 files changed

+1258
-5
lines changed

_overviews/scala3-book/introduction.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Introduction
33
type: chapter
44
description: This page begins the overview documentation of the Scala 3 language.
5-
languages: [zh-cn]
5+
languages: [ru, zh-cn]
66
num: 1
77
previous-page:
88
next-page: scala-features

_overviews/scala3-book/scala-features.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Scala Features
33
type: chapter
44
description: This page discusses the main features of the Scala programming language.
5-
languages: [zh-cn]
5+
languages: [ru, zh-cn]
66
num: 2
77
previous-page: introduction
88
next-page: why-scala-3

_overviews/scala3-book/taste-hello-world.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Hello, World!
33
type: section
44
description: This section demonstrates a Scala 3 'Hello, World!' example.
5-
languages: [zh-cn]
5+
languages: [ru, zh-cn]
66
num: 5
77
previous-page: taste-intro
88
next-page: taste-repl

_overviews/scala3-book/taste-intro.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: A Taste of Scala
33
type: chapter
44
description: This chapter provides a high-level overview of the main features of the Scala 3 programming language.
5-
languages: [zh-cn]
5+
languages: [ru, zh-cn]
66
num: 4
77
previous-page: why-scala-3
88
next-page: taste-hello-world

_overviews/scala3-book/why-scala-3.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Why Scala 3?
33
type: chapter
44
description: This page describes the benefits of the Scala 3 programming language.
5-
languages: [zh-cn]
5+
languages: [ru, zh-cn]
66
num: 3
77
previous-page: scala-features
88
next-page: taste-intro

_ru/scala3/book/introduction.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
---
2+
layout: multipage-overview
3+
title: Введение
4+
scala3: true
5+
partof: scala3-book
6+
overview-name: "Scala 3 — Book"
7+
type: chapter
8+
description: На этой странице начинается обзорная документация по языку Scala 3.
9+
language: ru
10+
num: 1
11+
previous-page:
12+
next-page: scala-features
13+
---
14+
15+
Добро пожаловать в книгу по Scala 3.
16+
Цель этой книги — предоставить неформальное введение в язык Scala.
17+
Она относительно легко затрагивает все темы Scala.
18+
Если в какой-то момент во время чтения этой книги вы захотите получить дополнительную информацию о конкретной функции,
19+
можете воспользоваться ссылкой на нашу [Справочную документацию][reference],
20+
в которой более подробно рассматриваются многие новые функции языка Scala.
21+
22+
<blockquote class="help-info">
23+
<i class="fa fa-info"></i>&nbsp;&nbsp;Если вас интересует заархивированное издание книги для Scala 2,
24+
доступ к нему <a href="/overviews/scala-book/introduction.html">можно получить здесь</a>.
25+
В настоящее время мы находимся в процессе слияния двух книг, и вы можете <a href="{% link scala3/contribute-to-docs.md %}">нам помочь</a>.
26+
</blockquote>
27+
28+
В этой книге мы надеемся продемонстрировать, что Scala — это красивый, выразительный язык программирования с чистым современным синтаксисом,
29+
который поддерживает и функциональное программирование (ФП), и объектно-ориентированное программирование (ООП),
30+
а также обеспечивает безопасную статическую систему типов.
31+
Синтаксис, грамматика и функции Scala были переосмыслены, открыто обсуждались и были обновлены в 2020 году,
32+
чтобы стать яснее и проще для понимания, чем когда-либо прежде.
33+
34+
Книга начинается с беглого обзора возможностей Scala в [разделе “Почувствуй Scala”][taste].
35+
После этого обзора в следующих разделах содержится более подробная информация о рассмотренных языковых функциях.
36+
37+
[reference]: {{ site.scala3ref }}/overview.html
38+
[taste]: {% link _overviews/scala3-book/taste-intro.md %}

_ru/scala3/book/scala-features.md

Lines changed: 487 additions & 0 deletions
Large diffs are not rendered by default.

_ru/scala3/book/taste-hello-world.md

Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
---
2+
layout: multipage-overview
3+
title: Пример 'Hello, World!'
4+
scala3: true
5+
partof: scala3-book
6+
overview-name: "Scala 3 — Book"
7+
type: chapter
8+
description: В этом примере демонстрируется пример 'Hello, World!' на Scala 3.
9+
language: ru
10+
num: 5
11+
previous-page: taste-intro
12+
next-page:
13+
---
14+
15+
> **Подсказка**: в следующих примерах попробуйте выбрать предпочтительную для вас версию Scala.
16+
> <noscript><span style="font-weight: bold;">Info</span>: JavaScript is currently disabled, code tabs will still work, but preferences will not be remembered.</noscript>
17+
18+
## Ваша первая Scala-программа
19+
20+
21+
Пример “Hello, World!” на Scala выглядит следующим образом.
22+
Сначала поместите этот код в файл с именем _hello.scala_:
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+
> В этом коде мы определили метод с именем `main` внутри Scala `object`-а с именем `hello`.
36+
> `object` в Scala похож на `class`, но определяет экземпляр singleton, который можно передать.
37+
> `main` принимает входной параметр с именем `args`, который должен иметь тип `Array[String]`
38+
> (`args` пока можно игнорировать).
39+
40+
{% endtab %}
41+
42+
{% tab 'Scala 3' for=hello-world-demo %}
43+
```scala
44+
@main def hello() = println("Hello, World!")
45+
```
46+
> В этом коде `hello` - это метод.
47+
> Он определяется с помощью `def` и объявляется в качестве основного метода с помощью аннотации `@main`.
48+
> Он выводит строку "Hello, World!" на стандартный вывод (STDOUT) с помощью метода `println`.
49+
50+
{% endtab %}
51+
52+
{% endtabs %}
53+
<!-- End tabs -->
54+
55+
Затем скомпилируйте код с помощью `scalac`:
56+
57+
```bash
58+
$ scalac hello.scala
59+
```
60+
61+
Если вы переходите на Scala с Java: `scalac` похоже на `javac`, эта команда создает несколько файлов:
62+
63+
<!-- Display Hello World compiled outputs for each Scala Version -->
64+
{% tabs hello-world-outputs class=tabs-scala-version %}
65+
66+
{% tab 'Scala 2' for=hello-world-outputs %}
67+
```bash
68+
$ ls -1
69+
hello$.class
70+
hello.class
71+
hello.scala
72+
```
73+
{% endtab %}
74+
75+
{% tab 'Scala 3' for=hello-world-outputs %}
76+
```bash
77+
$ ls -1
78+
hello$package$.class
79+
hello$package.class
80+
hello$package.tasty
81+
hello.scala
82+
hello.class
83+
hello.tasty
84+
```
85+
{% endtab %}
86+
87+
{% endtabs %}
88+
<!-- End tabs -->
89+
90+
Как и Java, файлы _.class_ представляют собой файлы байт-кода, и они готовы к запуску в JVM.
91+
92+
Теперь вы можете запустить метод `hello` командой `scala`:
93+
94+
```bash
95+
$ scala hello
96+
Hello, World!
97+
```
98+
99+
Если запуск прошел успешно, поздравляем, вы только что скомпилировали и запустили свое первое приложение Scala.
100+
101+
> Дополнительную информацию о sbt и других инструментах, упрощающих разработку на Scala, можно найти в главе [Инструменты Scala][scala_tools].
102+
103+
## Запрос пользовательского ввода
104+
105+
В нашем следующем примере давайте спросим имя пользователя, прежде чем приветствовать его!
106+
107+
Есть несколько способов прочитать ввод из командной строки, но самый простой способ —
108+
использовать метод `readLine` из объекта _scala.io.StdIn_.
109+
Чтобы использовать этот метод, вам нужно сначала его импортировать, например:
110+
111+
{% tabs import-readline %}
112+
{% tab 'Scala 2 and 3' for=import-readline %}
113+
```scala
114+
import scala.io.StdIn.readLine
115+
```
116+
{% endtab %}
117+
{% endtabs %}
118+
119+
Чтобы продемонстрировать, как это работает, давайте создадим небольшой пример.
120+
Поместите этот исходный код в файл с именем _helloInteractive.scala_:
121+
122+
<!-- Display interactive Hello World application for each Scala Version -->
123+
{% tabs hello-world-interactive class=tabs-scala-version %}
124+
125+
{% tab 'Scala 2' for=hello-world-interactive %}
126+
```scala
127+
import scala.io.StdIn.readLine
128+
129+
object helloInteractive {
130+
131+
def main(args: Array[String]) = {
132+
println("Please enter your name:")
133+
val name = readLine()
134+
135+
println("Hello, " + name + "!")
136+
}
137+
138+
}
139+
```
140+
{% endtab %}
141+
142+
{% tab 'Scala 3' for=hello-world-interactive %}
143+
```scala
144+
import scala.io.StdIn.readLine
145+
146+
@main def helloInteractive() =
147+
println("Please enter your name:")
148+
val name = readLine()
149+
150+
println("Hello, " + name + "!")
151+
```
152+
{% endtab %}
153+
154+
{% endtabs %}
155+
<!-- End tabs -->
156+
157+
В этом коде мы сохраняем результат из `readLine` в переменную с именем `name`,
158+
затем используем оператор над строками `+` для соединения `"Hello, "` с `name` и `"!"`, создавая одно единственное строковое значение.
159+
160+
> Вы можете узнать больше об использовании val, прочитав главу [Переменные и типы данных](/scala3/book/taste-vars-data-types.html).
161+
162+
Затем скомпилируйте код с помощью `scalac`:
163+
164+
```bash
165+
$ scalac helloInteractive.scala
166+
```
167+
168+
Затем запустите его с помощью `scala helloInteractive`. На этот раз программа сделает паузу после запроса вашего имени
169+
и подождет, пока вы не наберете имя и не нажмете клавишу возврата на клавиатуре.
170+
Выглядит это так:
171+
172+
```bash
173+
$ scala helloInteractive
174+
Please enter your name:
175+
176+
```
177+
178+
Когда вы вводите свое имя в "приглашении", окончательное взаимодействие должно выглядеть так:
179+
180+
```bash
181+
$ scala helloInteractive
182+
Please enter your name:
183+
Alvin Alexander
184+
Hello, Alvin Alexander!
185+
```
186+
187+
### Примечание об импорте
188+
189+
Как вы ранее видели, иногда определенные методы или другие типы определений, которые мы увидим позже, недоступны,
190+
если вы не используете подобное предложение `import`:
191+
192+
{% tabs import-readline-2 %}
193+
{% tab 'Scala 2 and 3' for=import-readline-2 %}
194+
```scala
195+
import scala.io.StdIn.readLine
196+
```
197+
{% endtab %}
198+
{% endtabs %}
199+
200+
Импорт помогает писать и распределять код несколькими способами:
201+
- вы можете поместить код в несколько файлов, чтобы избежать беспорядка и облегчить навигацию в больших проектах.
202+
- вы можете использовать библиотеку кода, возможно, написанную кем-то другим, которая имеет полезную функциональность.
203+
- вы видите, откуда берется определенное определение (особенно если оно не было записано в текущем файле).
204+
205+
[scala_tools]: {% link _overviews/scala3-book/scala-tools.md %}

_ru/scala3/book/taste-intro.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
layout: multipage-overview
3+
title: Почувствуй Scala
4+
scala3: true
5+
partof: scala3-book
6+
overview-name: "Scala 3 — Book"
7+
type: chapter
8+
description: В этой главе представлен общий обзор основных возможностей языка программирования Scala 3.
9+
language: ru
10+
num: 4
11+
previous-page: why-scala-3
12+
next-page: taste-hello-world
13+
---
14+
15+
16+
В этой главе представлен краткий обзор основных возможностей языка программирования Scala 3.
17+
После начального ознакомления остальная часть книги содержит более подробную информацию об описанных функциях,
18+
а [справочная документация][reference] содержит массу подробностей.
19+
20+
## Настройка Скала
21+
22+
На протяжении этой главы и остальной части книги мы рекомендуем вам пробовать примеры, скопировав их или набрав вручную.
23+
Инструменты, необходимые для работы с примерами на вашем компьютере, можно установить,
24+
следуя нашему [руководству для началы работы со Scala][get-started].
25+
26+
> В качестве альтернативы вы можете запустить примеры в веб-браузере с помощью [Scastie](https://scastie.scala-lang.org),
27+
> полного онлайн-редактора и исполнителя кода для Scala.
28+
29+
30+
[reference]: {{ site.scala3ref }}/overview.html
31+
[get-started]: {% link _getting-started/index.md %}

0 commit comments

Comments
 (0)