Skip to content

Commit 4f33296

Browse files
DespiteDeathn.kogut
andauthored
Update variances.md due to the language rules (#2730)
Co-authored-by: n.kogut <[email protected]>
1 parent af8b894 commit 4f33296

File tree

3 files changed

+8
-8
lines changed

3 files changed

+8
-8
lines changed

_ru/overviews/collections-2.13/overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ language: ru
4141

4242
scala.collection.immutable.List // Полное объявление
4343
scala.List // объявление через псевдоним
44-
List // тк scala._ всегда автоматически импортируется
44+
List // т.к. scala._ всегда автоматически импортируется
4545
// можно просто указать имя коллекции
4646

4747
Другие псевдонимы для типов

_ru/tour/implicit-conversions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ implicit def int2Integer(x: Int) =
4848
java.lang.Integer.valueOf(x)
4949
```
5050

51-
Компилятор предупреждает при компиляции об обнаружении неявных преобразований, тк неявные преобразования могут иметь разные подводные камни (особенно если использовать их без разбора).
51+
Компилятор предупреждает при компиляции об обнаружении неявных преобразований, т.к. неявные преобразования могут иметь разные подводные камни (особенно если использовать их без разбора).
5252

5353
Чтоб отключить предупреждения выполните одно из следующих действий:
5454

_ru/tour/variances.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ next-page: upper-type-bounds
88
previous-page: generic-classes
99
---
1010

11-
Вариантность (Variances) - это указание определенной специфики взаимосвязи между связанными типам. Scala поддерживает вариантную аннотацию типов у [обобщенных классов](generic-classes.html), что позволяет им быть ковариантными, контрвариантными или инвариантными (если нет никакого указание на вариантность). Использование вариантности в системе типов позволяет устанавливать понятные взаимосвязи между сложными типами, в то время как отсутствие вариантности может ограничить повторное использование абстракции класса.
11+
Вариантность (Variances) - это указание определенной специфики взаимосвязи между связанными типам. Scala поддерживает вариантную аннотацию типов у [обобщенных классов](generic-classes.html), что позволяет им быть ковариантными, контрвариантными или инвариантными (если нет никакого указания на вариантность). Использование вариантности в системе типов позволяет устанавливать понятные взаимосвязи между сложными типами, в то время как отсутствие вариантности может ограничить повторное использование абстракции класса.
1212

1313
```scala mdoc
1414
class Foo[+A] // ковариантный класс
15-
class Bar[-A] // контрвариантный класс
16-
class Baz[A] // инвариантными класс
15+
class Bar[-A] // контравариантный класс
16+
class Baz[A] // инвариантный класс
1717
```
1818

1919
### Ковариантность
@@ -135,15 +135,15 @@ val cat: Cat = catContainer.getValue // Ой, мы бы закончили пр
135135

136136
Другим примером, который может помочь понять вариантность, является трейт `Function1[-T, +R]` из стандартной библиотеки Scala. `Function1` представляет собой функцию с одним параметром, где первый тип `T` представляет собой тип параметра, а второй тип `R` представляет собой тип результата. Функция `Function1` является контрвариантной в рамках типа принимаемого аргумента, а ковариантной - в рамках возвращаемого типа. Для этого примера мы будем использовать явное обозначение типа `A =>B` чтоб продемонстрировать `Function1[A, B]`.
137137

138-
Рассмотрим схожий пример `Cat`, `Dog`, `Animal` в той же взаимосвязи что и раньше, плюс следующее:
138+
Рассмотрим схожий пример `Cat`, `Dog`, `Animal` в той же взаимосвязи, что и раньше, плюс следующее:
139139

140140
```scala mdoc
141141
abstract class SmallAnimal extends Animal
142142
case class Mouse(name: String) extends SmallAnimal
143143
```
144144

145-
Предположим, мы работаем с функциями, которые принимают типы животных и возвращают типы еды, которую они едят. Если мы хотим `Cat => SmallAnimal` (потому что кошки едят маленьких животных), но вместо этого мы получим функцию `Animal => Mouse`, то наша программа все равно будет работать. Интуитивно функция `Animal => Mouse` все равно будет принимать `Cat` в качестве аргумента, тк `Cat` является `Animal`, и возвращать `Mouse` - который также является и `SmallAnimal`. Поскольку мы можем безопасно заменить первое вторым, можно сказать, что `Animal => Mouse` аналогично `Cat => SmallAnimal`.
145+
Предположим, что мы работаем с функциями, которые принимают типы животных и возвращают типы еды. Если мы хотим `Cat => SmallAnimal` (потому что кошки едят маленьких животных), но вместо этого мы получим функцию `Animal => Mouse`, то наша программа все равно будет работать. Интуитивно функция `Animal => Mouse` все равно будет принимать `Cat` в качестве аргумента, т.к. `Cat` является `Animal`, и возвращать `Mouse` - который также является и `SmallAnimal`. Поскольку мы можем безопасно заменить первое вторым, можно сказать, что `Animal => Mouse` аналогично `Cat => SmallAnimal`.
146146

147147
### Сравнение с другими языками
148148

149-
В языках, похожих на Scala, разные способы поддержи вариантности. Например, указания вариантности в Scala очень похожи на то, как это делается в C#, где такие указания добавляются при объявлении абстракции класса (вариантность при объявлении). Однако в Java, указание вариантности задается непосредственно при использовании абстракции класса (вариантность при использовании).
149+
В языках, похожих на Scala, разные способы поддержки вариантности. Например, указания вариантности в Scala очень похожи на то, как это делается в C#, где такие указания добавляются при объявлении абстракции класса (вариантность при объявлении). Однако в Java, указание вариантности задается непосредственно при использовании абстракции класса (вариантность при использовании).

0 commit comments

Comments
 (0)