Skip to content

Commit 0b6ecb9

Browse files
Refresh /tour/unified-types.md (#2781)
1 parent 4c6a3c7 commit 0b6ecb9

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

_ru/tour/unified-types.md

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ prerequisite-knowledge: classes, basics
1313

1414
<a href="{{ site.baseurl }}/resources/images/tour/unified-types-diagram.svg"><img style="width:100%" src="{{ site.baseurl }}/resources/images/tour/unified-types-diagram.svg" alt="Scala Type Hierarchy"></a>
1515

16-
## Иерархия типов Scala ##
16+
## Иерархия типов Scala
1717

1818
[`Any`](https://www.scala-lang.org/api/2.12.1/scala/Any.html) это супертип всех типов, также называемый верхним типом. Он определяет несколько универсальных методов, таких как `equals`, `hashCode` и `toString`. У `Any` есть два прямых подкласса: `AnyVal` и `AnyRef`.
1919

@@ -23,6 +23,9 @@ prerequisite-knowledge: classes, basics
2323

2424
Вот пример, демонстрирующий, что строки, целые числа, символы, логические значения и функции являются объектами, как и любой другой объект:
2525

26+
{% tabs unified-types-1 %}
27+
{% tab 'Scala 2 и 3' for=unified-types-1 %}
28+
2629
```scala mdoc
2730
val list: List[Any] = List(
2831
"a string",
@@ -35,6 +38,9 @@ val list: List[Any] = List(
3538
list.foreach(element => println(element))
3639
```
3740

41+
{% endtab %}
42+
{% endtabs %}
43+
3844
Объявляем переменную `list` типа `List[Any]`. Список инициализируется элементами различных типов, но все они являются экземпляром `scala.Any`, так что вы можете добавить их в список.
3945

4046
Ниже приведен вывод программы:
@@ -48,11 +54,15 @@ true
4854
```
4955

5056
## Приведение типа
57+
5158
Числовые типы могут быть приведены следующим образом:
5259
<a href="{{ site.baseurl }}/resources/images/tour/type-casting-diagram.svg"><img style="width:100%" src="{{ site.baseurl }}/resources/images/tour/type-casting-diagram.svg" alt="Scala Type Hierarchy"></a>
5360

5461
Например:
5562

63+
{% tabs unified-types-2 %}
64+
{% tab 'Scala 2 и 3' for=unified-types-2 %}
65+
5666
```scala mdoc
5767
val x: Long = 987654321
5868
val y: Float = x.toFloat // 9.8765434E8 (заметьте, что некоторая точность теряется в этом случае.)
@@ -61,17 +71,27 @@ val face: Char = '☺'
6171
val number: Int = face // 9786
6272
```
6373

74+
{% endtab %}
75+
{% endtabs %}
76+
6477
Приведение типа - однонаправленно. Следующий пример не скомпилируется:
6578

79+
{% tabs unified-types-3 %}
80+
{% tab 'Scala 2 и 3' for=unified-types-3 %}
81+
6682
```
6783
val x: Long = 987654321
6884
val y: Float = x.toFloat // 9.8765434E8
6985
val z: Long = y // обратно не подходит
7086
```
7187

88+
{% endtab %}
89+
{% endtabs %}
90+
7291
Вы также можете приводить к своему подтипу. Об этом мы поговорим позже в ходе нашего обзора.
7392

7493
## Nothing и Null
75-
`Nothing` является подтипом всех типов, также называемым нижним типом. Нет значения, которое имеет тип `Nothing`. Обычно он используется чтоб дать сигнал о не вычислимости, например брошено исключение, выход из программы, бесконечное зацикливание (т.е. это тип выражения, которое не вычисляется).
94+
95+
`Nothing` является подтипом всех типов, также называемым нижним типом. Нет значения, которое имеет тип `Nothing`. Обычно он используется чтоб дать сигнал о не вычислимости, например брошено исключение, выход из программы, бесконечное зацикливание (т.е. это тип выражения, которое не вычисляется).
7696

7797
`Null` подтип всех ссылочных типов (т.е. любой подтип AnyRef). Он имеет одно значение, определяемое ключевым словом литерала `null`. `Null` предоставляется в основном для функциональной совместимости с другими языками JVM и почти никогда не должен использоваться в коде Scala. Об альтернативах `null` мы поговорим позднее.

0 commit comments

Comments
 (0)