Files
SecondBrain/99 System/Archive/Ruby - основы языка.md
2026-05-31 10:18:48 +03:00

76 lines
3.1 KiB
Markdown

---
status: seed
type: concept
tags: []
created: 2025-12-17
updated: 2026-05-17
aliases:
- Ruby - основы языка
---
# Ruby - основы языка
Пусть Ruby и объектно-ориентированный язык, можно с ним работать, как с обычным процедурным языком.
```ruby
puts "Hello World!"
```
Команда `puts` выводит что-угодно в консоль.
- В конце строк ставить знаки препинания не нужно
- Пробелы в начале строки ничего не значит, никакой табуляции
- Если нужно написать несколько команд в одной строке, то `;` заменит перенос строки по смыслу
## Комментарии
- Два вида комментариев:
- Однострочный - символ `#`
- Многострочный - конструкция =begin =end
## Типы данных
```ruby
puts "Hello".class -> String
puts true.class -> TrueClass
puts 5.class -> Integer
puts 6.4.class -> Float
putl nil.class -> NilClass
```
### Именование
- Переменные называются с маленькой буквы
- Классы, обратно, именуются с большой буквы
- Нельзя называть классы и переменные, используя ключевые слова языка
### Преобразование типов
- Явное (с помощью функций)
- `to_i` - к целому числу (отсечение дробной части для *float*)
- `to_s` - к строке
- `to_f` - к вещественному числу
- Неявное (преобразование в ходе работы программы) - авто преобразование при мат.операциях (int + float = float)
![[Pasted image 20260517175400.png]]
![[Pasted image 20260517175655.png]]
## Управляющие конструкции
В Ruby есть три основных оператора:
- if - без ветвления
`if a > 0 <action> end`
- if-elsif-else
- unless - сработает, если условие ложно
- case
![[Pasted image 20260517181450.png]]
### Операторы цикла
1) loop - бесконечный цикл (с условиями выхода break)
2) while - цикл с условием выполнения
3) next - прерывание шага цикла и моментальный переход на следующий шаг
4) until - цикл, пока условие ложно
5) redo - прерывание текущего шага и повторение его же
6) for - итератор перебора перечислимого объекта
- самый распространенный вариант - диапазоны:
- `n..m` - все целые от `n` до `m` *включительно*
- `n...m` - все числа не включая `m`
> ```ruby
> x, r = x.divmod
> ```