vault backup: 2026-05-26 21:06:42
This commit is contained in:
Vendored
+19
-4
@@ -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",
|
||||
|
||||
@@ -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