Files
SecondBrain/00 Inbox/Знания Ruby.md
T
2026-05-26 21:06:42 +03:00

91 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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-языков.