Files
SecondBrain/90 Library/Programming/Ruby - основы языка.md
T
2026-05-24 15:03:28 +03:00

122 lines
3.0 KiB
Markdown

---
status: seed
type: knowledge
tags:
- programming
- ruby
created: 2026-05-17
updated: 2026-05-17
title: Ruby - основы языка
source: "[[Ruby - основы языка]]"
---
# Ruby — основы языка
Ruby — объектно-ориентированный язык, но допускает процедурный стиль написания кода. Всё является объектом, включая числа и булевы значения.
Связанные темы: [[Ruby On Rails]]
## Синтаксис
- Знак препинания в конце строки не нужен
- Отступы не несут синтаксического смысла (в отличие от Python)
- Несколько команд в одной строке разделяются через `;`
```ruby
puts "Hello World!"
puts 42; puts "next line"
```
## Комментарии
```ruby
# однострочный комментарий
=begin
многострочный
комментарий
=end
```
## Типы данных
```ruby
"Hello".class # => String
true.class # => TrueClass
5.class # => Integer
6.4.class # => Float
nil.class # => NilClass
```
### Именование
- Переменные — с маленькой буквы: `my_var`
- Классы — с большой буквы: `MyClass`
- Ключевые слова языка использовать нельзя
### Преобразование типов
**Явное:**
| Метод | Что делает |
|--------|-----------------------------------------|
| `to_i` | к целому числу (дробная часть отсекается) |
| `to_f` | к вещественному числу |
| `to_s` | к строке |
**Неявное:** при математических операциях `Integer + Float``Float`.
## Управляющие конструкции
```ruby
# if без ветвления
if a > 0
action
end
# if-elsif-else
if a > 0
...
elsif a == 0
...
else
...
end
# unless — выполнится, если условие ложно
unless a > 0
action
end
# case
case a
when 1 then puts "один"
when 2 then puts "два"
else puts "другое"
end
```
## Циклы
| Оператор | Назначение |
|----------|-----------|
| `loop` | бесконечный цикл; выход через `break` |
| `while` | цикл с условием выполнения |
| `until` | цикл, пока условие ложно |
| `for` | итератор по перечислимому объекту |
| `next` | пропустить текущий шаг |
| `redo` | повторить текущий шаг заново |
**Диапазоны в `for`:**
```ruby
for i in 1..5 # от 1 до 5 включительно
for i in 1...5 # от 1 до 4 (5 не входит)
```
**Деление с остатком:**
```ruby
x, r = x.divmod(n)
```