vault backup: 2026-05-26 21:06:42
This commit is contained in:
Vendored
+19
-4
@@ -131,9 +131,24 @@
|
|||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "Итераторы для обработки массивов Ruby"
|
"title": "Итераторы для обработки массивов Ruby"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "b6f523c721c24fc0",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "00 Inbox/Знания Ruby.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false,
|
||||||
|
"backlinks": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Знания Ruby"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"currentTab": 5
|
"currentTab": 6
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "vertical"
|
"direction": "vertical"
|
||||||
@@ -370,13 +385,14 @@
|
|||||||
"terminal:Open terminal": false
|
"terminal:Open terminal": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "5c30edcd5ebc00c8",
|
"active": "b6f523c721c24fc0",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
|
"00 Inbox/Итераторы для обработки массивов Ruby.md",
|
||||||
|
"00 Inbox/Знания Ruby.md",
|
||||||
"99 System/Cache/Pasted image 20260526204029.png",
|
"99 System/Cache/Pasted image 20260526204029.png",
|
||||||
"99 System/Cache/Pasted image 20260526203848.png",
|
"99 System/Cache/Pasted image 20260526203848.png",
|
||||||
"99 System/Cache/Pasted image 20260526203807.png",
|
"99 System/Cache/Pasted image 20260526203807.png",
|
||||||
"AGENTS.md",
|
"AGENTS.md",
|
||||||
"00 Inbox/Итераторы для обработки массивов Ruby.md",
|
|
||||||
"99 System/Archive/Работа с API для проекта Attendance Mephi.md",
|
"99 System/Archive/Работа с API для проекта Attendance Mephi.md",
|
||||||
"90 Library/Programming/Ruby On Rails/API импорт в Rails через runner.md",
|
"90 Library/Programming/Ruby On Rails/API импорт в Rails через runner.md",
|
||||||
"90 Library/HomeLab/Infrastructure — ada-dev.md",
|
"90 Library/HomeLab/Infrastructure — ada-dev.md",
|
||||||
@@ -402,7 +418,6 @@
|
|||||||
"99 System/Cache/Pasted image 20260521133832.png",
|
"99 System/Cache/Pasted image 20260521133832.png",
|
||||||
"99 System/Cache/Pasted image 20260521133824.png",
|
"99 System/Cache/Pasted image 20260521133824.png",
|
||||||
"99 System/Cache/Pasted image 20260521133344.png",
|
"99 System/Cache/Pasted image 20260521133344.png",
|
||||||
"99 System/Cache/Pasted image 20260521133332.png",
|
|
||||||
"90 Library/06 Programming/Ruby On Rails/Rails credentials edit не открывает редактор.md",
|
"90 Library/06 Programming/Ruby On Rails/Rails credentials edit не открывает редактор.md",
|
||||||
"90 Library/06 Programming/Ruby On Rails/Sidekiq - основа работы.md",
|
"90 Library/06 Programming/Ruby On Rails/Sidekiq - основа работы.md",
|
||||||
"90 Library/06 Programming/Ruby - массивы.md",
|
"90 Library/06 Programming/Ruby - массивы.md",
|
||||||
|
|||||||
@@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
status: seed
|
||||||
|
type: concept
|
||||||
|
tags: []
|
||||||
|
created: 2025-12-17
|
||||||
|
updated: 2026-05-26
|
||||||
|
title:
|
||||||
|
---
|
||||||
|
## Значение по умолчанию
|
||||||
|
|
||||||
|
В Ruby широко используется такой код:
|
||||||
|
|
||||||
|
```
|
||||||
|
a ||= 'что-то'
|
||||||
|
# a = a || 'что-то'
|
||||||
|
```
|
||||||
|
|
||||||
|
Он используется для задания значения по умолчанию. Такое возможно и почти всегда безопасно из-за очень ограниченного списка _falsey_ значений. Единственное место, где этот способ не сработает – там, где `false` это допустимое значение.
|
||||||
|
|
||||||
|
## Предикаты
|
||||||
|
|
||||||
|
В Ruby в отличие от большинства других языков принято использовать предикаты практически для всех часто встречающихся проверок. Например, как мы обычно проверяем, что число равно нулю? С помощью сравнения с нулем. В Ruby это тоже работает, но это не Ruby Way:
|
||||||
|
|
||||||
|
```
|
||||||
|
0.zero? # true
|
||||||
|
1.zero? # false
|
||||||
|
2.positive? # true
|
||||||
|
|
||||||
|
# чётное/нечётное
|
||||||
|
8.even? # true
|
||||||
|
8.odd? # false
|
||||||
|
|
||||||
|
''.empty? # true
|
||||||
|
'wow'.empty? # false
|
||||||
|
|
||||||
|
something.nil?
|
||||||
|
|
||||||
|
# не пустой массив
|
||||||
|
items.any?
|
||||||
|
# пустой массив
|
||||||
|
items.empty?
|
||||||
|
```
|
||||||
|
|
||||||
|
## Логические операторы
|
||||||
|
|
||||||
|
Логический тип в Ruby представлен привычными значениями `true` и `false`, а также набором операторов `&&` (и), `==` (равно), `||` (или) и `!` (не):
|
||||||
|
|
||||||
|
```
|
||||||
|
true && false # false
|
||||||
|
false || true # true
|
||||||
|
```
|
||||||
|
|
||||||
|
В отличие от многих других языков сравнение с логическим значением в Ruby строгое, то есть `true` и `false` равны только самим себе:
|
||||||
|
|
||||||
|
```
|
||||||
|
true == 1 # false
|
||||||
|
false == nil # false
|
||||||
|
```
|
||||||
|
|
||||||
|
Что не отменяет возможности использовать в логических выражениях значения любых типов:
|
||||||
|
|
||||||
|
```
|
||||||
|
0 && 'one' # "one"
|
||||||
|
nil && false # nil
|
||||||
|
```
|
||||||
|
|
||||||
|
В Ruby только `nil` и `false` рассматриваются как _falsey_, все остальные значения в логических выражениях приводятся к `true`.
|
||||||
|
|
||||||
|
|
||||||
|
Условия в Ruby выглядят похожими на условия в других языках:
|
||||||
|
|
||||||
|
```
|
||||||
|
def sentence_type(text)
|
||||||
|
# проверяем последний символ в строке
|
||||||
|
if text.end_with?('?')
|
||||||
|
'question' # снова нет return
|
||||||
|
elsif text.end_with?('!')
|
||||||
|
'exclamation' # и тут
|
||||||
|
else
|
||||||
|
'statement' # и тут
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
sentence_type 'anybody here?' # question
|
||||||
|
sentence_type 'Hexlet for humans' # statement
|
||||||
|
sentence_type 'boo!' # exclamation
|
||||||
|
```
|
||||||
|
|
||||||
|
В Ruby условиям не нужны скобки. Выражения пишутся сразу после ключевого слова `if`. Для дополнительных условий используется ключевое словое `elsif`. И для всего остального — привычный `else`. В конце добавляется `end`.
|
||||||
|
|
||||||
|
В примере используется предикат (функция, возвращающая `true` или `false`) `end_with?()`. Ключевое отличие Ruby от других популярных языков — в использовании знака вопроса на конце, вместо `is` и его аналогов в начале. Этот подход перекочевал из Lisp-языков.
|
||||||
Reference in New Issue
Block a user