diff --git a/_ru/tour/traits.md b/_ru/tour/traits.md index bbd1e05b41..3eec6fd35c 100644 --- a/_ru/tour/traits.md +++ b/_ru/tour/traits.md @@ -15,7 +15,7 @@ prerequisite-knowledge: expressions, classes, generics, objects, companion-objec --- -Трейты (Traits) используются чтоб обмениваться между классами информацией о структуре и полях. Они похожи на интерфейсы из Java 8. Классы и объекты могут расширять трейты, но трейты не могут быть созданы и поэтому не имеют параметров. +Трейты (Traits) используются, чтобы обмениваться между классами информацией о структуре и полях. Они похожи на интерфейсы из Java 8. Классы и объекты могут расширять трейты, но трейты не могут быть созданы и поэтому не имеют параметров. ## Объявление трейта Минимальное объявление трейта - это просто ключевое слово `trait` и его имя: @@ -35,7 +35,7 @@ trait Iterator[A] { При наследовании от трейта `Iterator[A]` требует указание типа `A` а также реализация методов `hasNext` и `next`. ## Использование трейтов -Чтоб использовать трейты, необходимо наследовать класс от него используя ключевое слово `extends`. Затем необходимо реализовать все абстрактные члены трейта, используя ключевое слово `override`: +Чтобы использовать трейты, необходимо наследовать класс от него, используя ключевое слово `extends`. Затем необходимо реализовать все абстрактные члены трейта, используя ключевое слово `override`: ```scala mdoc:nest trait Iterator[A] { def hasNext: Boolean @@ -62,7 +62,7 @@ iterator.next() // вернет 1 Этот класс `IntIterator` использует параметр `to` в качестве верхней границы. Он наследуется от `Iterator[Int]`, что означает, что метод `next` должен возвращать Int. ## Подтипы -Туда где требуется определенный тип трейта, мы можем передавать любой наследованный от требуемого трейта класс +Туда, где требуется определенный тип трейта, мы можем передавать любой наследованный от требуемого трейта класс ```scala mdoc import scala.collection.mutable.ArrayBuffer @@ -81,4 +81,4 @@ animals.append(dog) animals.append(cat) animals.foreach(pet => println(pet.name)) // выведет "Harry" и "Sally" ``` -У трейта `Pet` есть абстрактное поле `name`, которое реализовано в классах `Cat` and `Dog`. В последней строке мы вызываем `pet.name`, который должен быть реализован в любом подтипе унаследованным от трейта `Pet`. +У трейта `Pet` есть абстрактное поле `name`, которое реализовано в классах `Cat` and `Dog`. В последней строке мы вызываем `pet.name`, который должен быть реализован в любом подтипе, унаследованном от трейта `Pet`.