Skip to content

Commit dc03bac

Browse files
committed
fix links, improve readability
1 parent eb42a91 commit dc03bac

File tree

3 files changed

+46
-53
lines changed

3 files changed

+46
-53
lines changed

_overviews/scala3-book/string-interpolation.md

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -108,22 +108,15 @@ Finally, all multi-line string literals can also be interpolated
108108
{% tabs example-7 %}
109109
{% tab 'Scala 2 and 3' for=example-7 %}
110110
```scala
111-
val name = "James"
112-
val age = 30
113-
114-
println(s"""{
115-
"name": "$name",
116-
"age": $age
117-
}""")
111+
println(s"""name: "$name",
112+
|age: $age""".stripMargin)
118113
```
119114

120-
This will pretty print the json as
115+
This will print as follows:
121116

122-
```json
123-
{
124-
"name": "James",
125-
"age": 30
126-
}
117+
```
118+
name: "James"
119+
age: 30
127120
```
128121
{% endtab %}
129122
{% endtabs %}

_ru/scala3/book/first-look-at-types.md

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -15,35 +15,35 @@ next-page: control-structures
1515

1616
## Все значения имеют тип
1717

18-
В Scala все значения имеют тип, включая числовые значения и функции.
18+
В Scala все значения имеют тип, включая числовые значения и функции.
1919
На приведенной ниже диаграмме показано подмножество иерархии типов.
2020

2121
<a href="{{ site.baseurl }}/resources/images/scala3-book/hierarchy.svg"><img style="width:100%" src="{{ site.baseurl }}/resources/images/scala3-book/hierarchy.svg" alt="Scala 3 Type Hierarchy"></a>
2222

2323
## Иерархия типов Scala
2424

25-
`Any` - это супертип всех типов, также называемый **верхним типом** (**the top type**).
25+
`Any` - это супертип всех типов, также называемый **верхним типом** (**the top type**).
2626
Он определяет универсальные методы, такие как `equals`, `hashCode` и `toString`.
2727

28-
У верхнего типа `Any` есть подтип [`Matchable`][matchable], который используется для обозначения всех типов,
29-
для которых возможно выполнить pattern matching (сопоставление с образцом).
30-
Важно гарантировать вызов свойства _“параметричность”_, что вкратце означает,
31-
что мы не можем сопоставлять шаблоны для значений типа `Any`, а только для значений, которые являются подтипом `Matchable`.
28+
У верхнего типа `Any` есть подтип [`Matchable`][matchable], который используется для обозначения всех типов,
29+
для которых возможно выполнить pattern matching (сопоставление с образцом).
30+
Важно гарантировать вызов свойства _“параметричность”_, что вкратце означает,
31+
что мы не можем сопоставлять шаблоны для значений типа `Any`, а только для значений, которые являются подтипом `Matchable`.
3232
[Справочная документация][matchable] содержит более подробную информацию о `Matchable`.
3333

3434
`Matchable` содержит два важных подтипа: `AnyVal` и `AnyRef`.
3535

36-
*`AnyVal`* представляет типы значений.
37-
Существует несколько предопределенных типов значений, и они non-nullable:
38-
`Double`, `Float`, `Long`, `Int`, `Short`, `Byte`, `Char`, `Unit` и `Boolean`.
36+
*`AnyVal`* представляет типы значений.
37+
Существует несколько предопределенных типов значений, и они non-nullable:
38+
`Double`, `Float`, `Long`, `Int`, `Short`, `Byte`, `Char`, `Unit` и `Boolean`.
3939
`Unit` - это тип значения, который не несет никакой значимой информации. Существует ровно один экземпляр `Unit` - `()`.
4040

41-
*`AnyRef`* представляет ссылочные типы. Все типы, не являющиеся значениями, определяются как ссылочные типы.
42-
Каждый пользовательский тип в Scala является подтипом `AnyRef`.
41+
*`AnyRef`* представляет ссылочные типы. Все типы, не являющиеся значениями, определяются как ссылочные типы.
42+
Каждый пользовательский тип в Scala является подтипом `AnyRef`.
4343
Если Scala используется в контексте среды выполнения Java, `AnyRef` соответствует `java.lang.Object`.
4444

45-
В языках, основанных на операторах, `void` используется для методов, которые ничего не возвращают.
46-
В Scala для методов, которые не имеют возвращаемого значения,
45+
В языках, основанных на операторах, `void` используется для методов, которые ничего не возвращают.
46+
В Scala для методов, которые не имеют возвращаемого значения,
4747
такие как следующий метод, для той же цели используется `Unit`:
4848

4949
{% tabs unit %}
@@ -54,7 +54,7 @@ def printIt(a: Any): Unit = println(a)
5454
{% endtab %}
5555
{% endtabs %}
5656

57-
Вот пример, демонстрирующий, что строки, целые числа, символы, логические значения и функции являются экземплярами `Any`
57+
Вот пример, демонстрирующий, что строки, целые числа, символы, логические значения и функции являются экземплярами `Any`
5858
и могут обрабатываться так же, как и любой другой объект:
5959

6060
{% tabs any %}
@@ -73,8 +73,8 @@ list.foreach(element => println(element))
7373
{% endtab %}
7474
{% endtabs %}
7575

76-
Код определяет список значений типа `List[Any]`.
77-
Список инициализируется элементами различных типов, но каждый из них является экземпляром `scala.Any`,
76+
Код определяет список значений типа `List[Any]`.
77+
Список инициализируется элементами различных типов, но каждый из них является экземпляром `scala.Any`,
7878
поэтому мы можем добавить их в список.
7979

8080
Вот вывод программы:
@@ -89,7 +89,7 @@ true
8989

9090
## Типы значений в Scala
9191

92-
Как показано выше, числовые типы Scala расширяют `AnyVal`, и все они являются полноценными объектами.
92+
Как показано выше, числовые типы Scala расширяют `AnyVal`, и все они являются полноценными объектами.
9393
В этих примерах показано, как объявлять переменные этих числовых типов:
9494

9595
{% tabs anyval %}
@@ -105,9 +105,9 @@ val f: Float = 3.0
105105
{% endtab %}
106106
{% endtabs %}
107107

108-
В первых четырех примерах, если явно не указать тип, то тип числа `1` по умолчанию будет равен `Int`,
109-
поэтому, если нужен один из других типов данных — `Byte`, `Long` или `Short` — необходимо явно объявить эти типы.
110-
Числа с десятичной дробью (например, `2.0`) по умолчанию будут иметь тип `Double`,
108+
В первых четырех примерах, если явно не указать тип, то тип числа `1` по умолчанию будет равен `Int`,
109+
поэтому, если нужен один из других типов данных — `Byte`, `Long` или `Short` — необходимо явно объявить эти типы.
110+
Числа с десятичной дробью (например, `2.0`) по умолчанию будут иметь тип `Double`,
111111
поэтому, если необходим `Float`, нужно объявить `Float` явно, как показано в последнем примере.
112112

113113
Поскольку `Int` и `Double` являются числовыми типами по умолчанию, их можно создавать без явного объявления типа данных:
@@ -121,7 +121,7 @@ val x = 1.0 // по умолчанию Double
121121
{% endtab %}
122122
{% endtabs %}
123123

124-
Также можно добавить символы `L`, `D`, and `F` (или их эквивалент в нижнем регистре)
124+
Также можно добавить символы `L`, `D`, and `F` (или их эквивалент в нижнем регистре)
125125
для того, чтобы задать `Long`, `Double` или `Float` значения:
126126

127127
{% tabs type-post %}
@@ -145,7 +145,7 @@ val c = 'a'
145145
{% endtab %}
146146
{% endtabs %}
147147

148-
Как показано, заключайте строки в двойные кавычки или тройные кавычки для многострочных строк,
148+
Как показано, заключайте строки в двойные кавычки или тройные кавычки для многострочных строк,
149149
а одиночный символ заключайте в одинарные кавычки.
150150

151151
Типы данных и их диапазоны:
@@ -176,7 +176,7 @@ val b = BigDecimal(123_456.789)
176176
{% endtab %}
177177
{% endtabs %}
178178

179-
Где `Double` и `Float` являются приблизительными десятичными числами,
179+
Где `Double` и `Float` являются приблизительными десятичными числами,
180180
а `BigDecimal` используется для точной арифметики, например, при работе с валютой.
181181

182182
`BigInt` и `BigDecimal` поддерживают все привычные числовые операторы:
@@ -200,7 +200,7 @@ val d = b * b // scala.math.BigInt = 1524157875019052100
200200

201201
### Интерполяция строк
202202

203-
Интерполяция строк обеспечивает очень удобный способ использования переменных внутри строк.
203+
Интерполяция строк обеспечивает очень удобный способ использования переменных внутри строк.
204204
Например, учитывая эти три переменные:
205205

206206
{% tabs string-inside1 %}
@@ -239,9 +239,9 @@ println(s"x.abs = ${x.abs}") // печатает "x.abs = 1"
239239

240240
#### Другие интерполяторы
241241

242-
То `s`, что вы помещаете перед строкой, является лишь одним из возможных интерполяторов.
243-
Если вы используете `f` вместо `s`, вы можете использовать `printf` - синтаксис форматирования стиля в строке.
244-
Кроме того, строковый интерполятор — это всего лишь специальный метод, и вы можете определить свой собственный.
242+
То `s`, что вы помещаете перед строкой, является лишь одним из возможных интерполяторов.
243+
Если вы используете `f` вместо `s`, вы можете использовать `printf` - синтаксис форматирования стиля в строке.
244+
Кроме того, строковый интерполятор — это всего лишь специальный метод, и вы можете определить свой собственный.
245245
Например, некоторые библиотеки баз данных определяют очень мощный интерполятор `sql`.
246246

247247
### Многострочные строки
@@ -314,7 +314,7 @@ val number: Int = face // 9786
314314
{% endtab %}
315315
{% endtabs %}
316316

317-
Вы можете привести к типу, только если нет потери информации.
317+
Вы можете привести к типу, только если нет потери информации.
318318
В противном случае вам нужно четко указать приведение типов:
319319

320320
{% tabs cast2 %}
@@ -327,29 +327,29 @@ val z: Long = y // Ошибка
327327
{% endtab %}
328328
{% endtabs %}
329329

330-
Вы также можете привести ссылочный тип к подтипу.
330+
Вы также можете привести ссылочный тип к подтипу.
331331
Это будет рассмотрено в книге позже.
332332

333333
## `Nothing` и `null`
334334

335-
`Nothing` является подтипом всех типов, также называемым **нижним типом** (**the bottom type**).
336-
Нет значения, которое имело бы тип `Nothing`.
337-
Он обычно сигнализирует о прекращении, таком как thrown exception, выходе из программы или бесконечном цикле -
335+
`Nothing` является подтипом всех типов, также называемым **нижним типом** (**the bottom type**).
336+
Нет значения, которое имело бы тип `Nothing`.
337+
Он обычно сигнализирует о прекращении, таком как thrown exception, выходе из программы или бесконечном цикле -
338338
т.е. это тип выражения, который не вычисляется до определенного значения, или метод, который нормально не возвращается.
339339

340-
`Null` - это подтип всех ссылочных типов (т.е. любой подтип `AnyRef`).
341-
Он имеет единственное значение, определяемое ключевым словом `null`.
342-
В настоящее время применение `null` считается плохой практикой.
343-
Его следует использовать в основном для взаимодействия с другими языками JVM.
344-
Опция компилятора `opt-in` изменяет статус `Null`, делая все ссылочные типы non-nullable.
340+
`Null` - это подтип всех ссылочных типов (т.е. любой подтип `AnyRef`).
341+
Он имеет единственное значение, определяемое ключевым словом `null`.
342+
В настоящее время применение `null` считается плохой практикой.
343+
Его следует использовать в основном для взаимодействия с другими языками JVM.
344+
Опция компилятора `opt-in` изменяет статус `Null`, делая все ссылочные типы non-nullable.
345345
Этот параметр может [стать значением по умолчанию][safe-null] в будущей версии Scala.
346346

347-
В то же время `null` почти никогда не следует использовать в коде Scala.
347+
В то же время `null` почти никогда не следует использовать в коде Scala.
348348
Альтернативы `null` обсуждаются в главе о [функциональном программировании][fp] и в [документации API][option-api].
349349

350350
[reference]: {{ site.scala3ref }}/overview.html
351351
[matchable]: {{ site.scala3ref }}/other-new-features/matchable.html
352-
[interpolation]: {% link _overviews/core/string-interpolation.md %}
352+
[interpolation]: {% link _overviews/scala3-book/string-interpolation.md %}
353353
[fp]: {% link _overviews/scala3-book/fp-intro.md %}
354354
[option-api]: https://scala-lang.org/api/3.x/scala/Option.html
355355
[safe-null]: {{ site.scala3ref }}/experimental/explicit-nulls.html

_zh-cn/overviews/scala3-book/first-look-at-types.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ val z: Long = y // Error
370370

371371
[reference]: {{ site.scala3ref }}/overview.html
372372
[matchable]: {{ site.scala3ref }}/other-new-features/matchable.html
373-
[interpolation]: {% link _overviews/core/string-interpolation.md %}
373+
[interpolation]: {% link _overviews/scala3-book/string-interpolation.md %}
374374
[fp]: {% link _zh-cn/overviews/scala3-book/fp-intro.md %}
375375
[option-api]: https://scala-lang.org/api/3.x/scala/Option.html
376376
[safe-null]: {{ site.scala3ref }}/experimental/explicit-nulls.html

0 commit comments

Comments
 (0)