💎 Ruby
Типы, операторы, циклы, методы, коллекции и гемы по задачам.
Шпаргалки · Программирование · #ruby #rails
IDE и запуск
RubyMine, VS Code. ruby app.rb, интерактив irb. Пакеты: gem (gem install x), Bundler (bundle install, Gemfile).
Типы данных
| Тип | Пример |
|---|---|
Integer, Float |
42, 3.14 |
String |
'a', "x=#{x}" |
Symbol |
:name |
Array, Hash, Range |
[1], {a: 1}, 1..5 |
true, false, nil |
всё, кроме nil и false, истинно |
Операторы
+ - * / % **, == != <=>, && || ! (и and or not), ||=, &. (безопасный вызов), .. / ....
Циклы
3.times { |i| puts i }
[1, 2].each { |x| puts x }
(1..5).each_with_index { |x, i| }
while cond; end
for x in arr do end
Методы
def add(a, b = 0) = a + b
square = ->(x) { x * x }
def hello(name:, greeting: 'Hi') = "#{greeting}, #{name}"
Встроенные
puts, p, gets, require, rand, sleep, Integer('5'), .to_s, .to_i, .nil?, .empty?, .freeze.
Асинхронность
Потоки Thread.new { }, Ractor, Fiber, гем async, фоновые задачи Sidekiq.
Коллекции
a = [3, 1, 2]
a.map { |x| x * 2 }.select(&:even?).sum
a.sort.reverse; a.sort_by { |x| -x }; a.group_by(&:odd?)
h = {a: 1}; h.fetch(:b, 0); h.transform_values { |v| v + 1 }
Гемы по задачам
Rails, Sinatra (веб), Sidekiq (фон), RSpec / Minitest (тесты), Rubocop (линтер), Nokogiri (HTML/XML), Devise (авторизация), Faraday (HTTP).