Skip to content

Commit

Permalink
Merge pull request #28 from soul-wish/master
Browse files Browse the repository at this point in the history
Fix some errors and typos 📝
  • Loading branch information
denysdovhan authored Jan 20, 2020
2 parents b9f8255 + 28ecd4b commit f8f6261
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 12 deletions.
4 changes: 2 additions & 2 deletions chapters/01-Strings-and-Methods.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ puts("Привіт, #{name}")
> **Зауважте:** Ruby чутлива до регістру. Тобто змінна `myvar` і `myVar` – дві різні змінні. Змінні, такі як `name` у нашому прикладі – повинні починатися з малої літери.
Між іншим, дужки після `gets()` не обов’язкові, як і дужки, що охоплюють рядки після `print` та `puts`: код запуститься так само, якщо ви видалите дужки. Вони допомагають уникати двозначності в коді і, в деяких випадках, інтерпритатор попередить вас, якщо ви їх пропустите. Деякі Ruby–розробники полюбляють пропускати дужки щоразу, коли це можливо — я не поділяю їхньої думки. Тому в цій книзі ви будете бачити приклади коду саме з дужками.
Між іншим, дужки після `gets()` не обов’язкові, як і дужки, що охоплюють рядки після `print` та `puts`: код запуститься так само, якщо ви видалите дужки. Вони допомагають уникати двозначності в коді і, в деяких випадках, інтерпретатор попередить вас, якщо ви їх пропустите. Деякі Ruby–розробники полюбляють пропускати дужки щоразу, коли це можливо — я не поділяю їхньої думки. Тому в цій книзі ви будете бачити приклади коду саме з дужками.
## Рядки та інтерполяція
Expand Down Expand Up @@ -175,7 +175,7 @@ puts "Tax on $#{subtotal} is $#{tax}, so grand total is $#{subtotal+tax}"

## Перевірка умови: `if ... then`

Проблема з простим обчислювачем податку, код якого наведено вище, у тому, що він може приймати від’ємні проміжні суми та видавати від’ємне значення податку — ситуація, яка наврядчи буде вигідна для уряду! Тому мені потрібно перевіряти наявність мінуса у чисел, і, якщо він присутній, встановлювати їм нульове значення. Ось оновлена версія мого коду:
Проблема з простим обчислювачем податку, код якого наведено вище, у тому, що він може приймати від’ємні проміжні суми та видавати від’ємне значення податку — ситуація, яка навряд чи буде вигідна для уряду! Тому мені потрібно перевіряти наявність мінуса у чисел, і, якщо він присутній, встановлювати їм нульове значення. Ось оновлена версія мого коду:

[**`tax_calculator.rb`**](../example/1/tax_calculator.rb):

Expand Down
4 changes: 2 additions & 2 deletions chapters/03-Class-Hierarchies.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

> **Ієрархія класів: предки та нащадки.** У цій книзі ми часто говоримо про _нащадків_ класів, які _наслідують_ функціональність від своїх класів–_предків_. Ці поняття навмисне наштовхують на своєрідні сімейні зв’язки між _спорідненими_ класами. В Ruby кожен клас має лише одного батька. Однак, класи можуть бути спадкоємцями великих та багатих сімейних родів з багатьма поколіннями дідів, прадідів і так далі…
Поведінка `Things` загалом може бути описана у самому ж класі `Thing`. Клас `Treasure` автоматично _унаслідує_ всі можливості класу `Thing`, тому нам не потрібно перезаписувати все заново. Він же зможе згодом розшириити свої можливості, які стосуються лише `Treasures`.
Поведінка `Things` загалом може бути описана у самому ж класі `Thing`. Клас `Treasure` автоматично _унаслідує_ всі можливості класу `Thing`, тому нам не потрібно перезаписувати все заново. Він же зможе згодом розширити свої можливості, які стосуються лише `Treasures`.

У якості узагальненого правила, при створенні класової ієрархії, класи з найбільш узагальненою поведінкою є вище у ієрархії, ніж класи з більш специфічною поведінкою. Таким чином, клас `Thing`, який має лише ім’я (`name`) та опис (`description`), мав би бути предком класу `Treasure`, який має ім’я (`name`), опис (`description`), а ще, додатково, значення (`value`); клас `Thing` також може бути предком для іншого спеціалізованого класу, як от `Room`, який має ім’я (`name`), опис (`description`), а також може існувати (`exits`) — і так далі…

Expand Down Expand Up @@ -58,7 +58,7 @@ def initialize(aName, aDescription, aValue)
super(aName, aDescription)
```

При використанні всередині методу, ключове слово `super` викликає метод з таким самим іменем у _батькіського (супер–)_ класу.
При використанні всередині методу, ключове слово `super` викликає метод з таким самим іменем у _батьківського (супер–)_ класу.

Поточний метод у класі `Treasure` викликає `initialize`, тому коли код всередині цього методу передає ці два аргументи (`aName`, `aDescription`) до `super`, це насправді передає їх до методу `initialize` батьківського класу `Thing`.

Expand Down
2 changes: 1 addition & 1 deletion chapters/05-Arrays.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
> a1 = [1, 'two', 3.0, array_length(a0)]
> ```
>
> Перший елемент масиву має індекс `0` — це означає, що кінцевий елемент має індекс, який дорівнює загальній кількості елементів в масиві мінус `1`. За зразком масива `a1`, що показаний вище, ось як отримати значення першого і останнього елементу:
> Перший елемент масиву має індекс `0` — це означає, що кінцевий елемент має індекс, який дорівнює загальній кількості елементів в масиві мінус `1`. За зразком масиву `a1`, що показаний вище, ось як отримати значення першого і останнього елементу:
>
> ```ruby
> a1[0] # поверне 1ий елемент (з індексом 0)
Expand Down
6 changes: 3 additions & 3 deletions chapters/06-Hashes.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ hash1.rb

Обидва приклади створюють порожній хеш. Об’єкт `Hash` завжди має значення за замовчуванням – значення, яке буде повертатись тоді, коли не знайдеться відповідне значення для певного індексу. У цих прикладах, `h2` ініціалізований зі значенням за замовчуванням: `"Some kind of ring"`; `h1` ініціалізується без такого значення, тому його значенням за замовчуванням буде `nil`.

Моючи створений `Hash`–об’єкт, ви можете додавати у нього елементи, використовуючи синтаксис схожий на масиви: вказуючи індекс між квадратними дужками та використовуючи `=` для присвоєння значення.
Маючи створений `Hash`–об’єкт, ви можете додавати у нього елементи, використовуючи синтаксис схожий на масиви: вказуючи індекс між квадратними дужками та використовуючи `=` для присвоєння значення.

Очевидна відмінність тут у тому, що для масивів індексом (_ключем_) має бути ціле число; для хешу це може бути будь-який унікальний елемент даних:

Expand Down Expand Up @@ -73,7 +73,7 @@ h1 = {
## Індексування в хеші
Щоб звернутись до значення в хеші, вкажіть ключ між двома квадтратними дужками:
Щоб звернутись до значення в хеші, вкажіть ключ між двома квадратними дужками:
```ruby
puts(h1['room2']) #=> "Тронний зал"
Expand Down Expand Up @@ -131,7 +131,7 @@ c = a + b #=> c=[1, 2, 3, 4, 5, 6] a=[1, 2, 3]
a << b #=> a=[1, 2, 3, [4, 5, 6]]
```

При додаванні через `<<`, перший масив (_приймач_ або _receiver_) модифікується, тоді як `+` повертає новий масив, а масив–приймач залишає незміненим. Якщо після додавання в кінець масиву через `<<` ви вирішите, що ви хочете додати елементи масиву, замість того, щоб _вкладати_ цілий масив масив–приймач, ви можете зробити це з допомогою методу `flatten`:
При додаванні через `<<`, перший масив (_приймач_ або _receiver_) модифікується, тоді як `+` повертає новий масив, а масив–приймач залишає незмінним. Якщо після додавання в кінець масиву через `<<` ви вирішите, що ви хочете додати елементи масиву, замість того, щоб _вкладати_ цілий масив масив–приймач, ви можете зробити це з допомогою методу `flatten`:

```ruby
a=[1, 2, 3, [4, 5, 6]]
Expand Down
4 changes: 2 additions & 2 deletions chapters/08-Conditional-Statements.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ end

[**`if_else.rb`**](https://github.com/LambdaBooks/thelittlebookofruby/blob/master/examples/8/if_else.rb):

Проста перевірка `if` має лише два можливих результати. Код або виконається, або ні, в залежності від істиності або хибності перевірки.
Проста перевірка `if` має лише два можливих результати. Код або виконається, або ні, в залежності від істинності або хибності перевірки.

Часто вам потрібно мати більше, ніж два можливих результати. Давайте припустимо, наприклад, що програма повинна виконуватись одним способом, якщо день тижня будній та іншим — якщо вихідним. Ви можете перевірити це, додавши секцію `else` після секції `if`, ось так:

Expand Down Expand Up @@ -275,7 +275,7 @@ when 1, 'Monday', 'Mon' : puts("Так, '#{i}' це понеділок")
[**`case2.rb`**](https://github.com/LambdaBooks/thelittlebookofruby/blob/master/examples/8/case2.rb):
Ось розгорнутіший приклад, який ілюструє синтаксичні елементи, про які йшлось раніше:
Ось більш розгорнутий приклад, який ілюструє синтаксичні елементи, про які йшлось раніше:
```ruby
case(i)
Expand Down
4 changes: 2 additions & 2 deletions chapters/09-Modules-and-Mixins.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
Як згадано у попередніх главах, кожен клас у Ruby має одного найближчого _батька_, хоча кожен батько може мати багато _дітей_.

Обмежуючи ієрархію класів однією лінією наслідування, Ruby уникає дакількох проблем, які можуть виникати у таких мовах програмування (як от C++), які which дозволяють множинне успадкування.
Обмежуючи ієрархію класів однією лінією наслідування, Ruby уникає декількох проблем, які можуть виникати у таких мовах програмування (як от C++), які which дозволяють множинне успадкування.

Коли клас має так багато батьків, як і дітей та їхніх батьків, а діти мають багато інших батьків та дітей, ви ризикуєте потрапити в заплутану мережу (чи може навіть _павутинну_?) замість того, щоб мати чітку, добре організовану ієрархію, яка вам і потрібна.

Expand Down Expand Up @@ -142,7 +142,7 @@ puts(ob.greet)

[**`modules4.rb`**](https://github.com/LambdaBooks/thelittlebookofruby/blob/master/examples/9/modules4.rb):

З іншого боку, ви можете бути більш зацікавленні у використанні модулів в якості альтернативи множинному успадкуванню. Повертаючись до прикладу, про який я згадував на початку цієї глави, давайте припустимо, що клас `Sword`, який має тип, як `Weapon`, так і `Treasure`. Можливо, `Sword` є нащадком класу` Weapon` (тому успадковує такі методи як `deadliness` (смертоносність) та `power` (сила)), проте він також повинен мати методи з `Treasure` (такі, як `value` (значення) та `insurance_cost` (вартість страхування)). Якщо ви визначете ці методи всередині модуля `Treasure`, замість класу `Treasure`, клас `Sword` міг би включати модуль `Treasure` для того, щоб додати (_змішати_) методи `Treasure` та власні методи класу `Sword`.
З іншого боку, ви можете бути більш зацікавленні у використанні модулів в якості альтернативи множинному успадкуванню. Повертаючись до прикладу, про який я згадував на початку цієї глави, давайте припустимо, що клас `Sword`, який має тип, як `Weapon`, так і `Treasure`. Можливо, `Sword` є нащадком класу` Weapon` (тому успадковує такі методи як `deadliness` (смертоносність) та `power` (сила)), проте він також повинен мати методи з `Treasure` (такі, як `value` (значення) та `insurance_cost` (вартість страхування)). Якщо ви визначите ці методи всередині модуля `Treasure`, замість класу `Treasure`, клас `Sword` міг би включати модуль `Treasure` для того, щоб додати (_змішати_) методи `Treasure` та власні методи класу `Sword`.

[**`mod_vars.rb`**](https://github.com/LambdaBooks/thelittlebookofruby/blob/master/examples/9/mod_vars.rb):

Expand Down

0 comments on commit f8f6261

Please sign in to comment.