vault backup: 2026-05-26 21:06:42

This commit is contained in:
Dmitry
2026-05-26 21:06:42 +03:00
parent d8b30f50c3
commit 5c302c572b
2 changed files with 110 additions and 4 deletions
+19 -4
View File
@@ -131,9 +131,24 @@
"icon": "lucide-file",
"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"
@@ -370,13 +385,14 @@
"terminal:Open terminal": false
}
},
"active": "5c30edcd5ebc00c8",
"active": "b6f523c721c24fc0",
"lastOpenFiles": [
"00 Inbox/Итераторы для обработки массивов Ruby.md",
"00 Inbox/Знания Ruby.md",
"99 System/Cache/Pasted image 20260526204029.png",
"99 System/Cache/Pasted image 20260526203848.png",
"99 System/Cache/Pasted image 20260526203807.png",
"AGENTS.md",
"00 Inbox/Итераторы для обработки массивов Ruby.md",
"99 System/Archive/Работа с API для проекта Attendance Mephi.md",
"90 Library/Programming/Ruby On Rails/API импорт в Rails через runner.md",
"90 Library/HomeLab/Infrastructure — ada-dev.md",
@@ -402,7 +418,6 @@
"99 System/Cache/Pasted image 20260521133832.png",
"99 System/Cache/Pasted image 20260521133824.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/Sidekiq - основа работы.md",
"90 Library/06 Programming/Ruby - массивы.md",
+91
View File
@@ -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-языков.