Ruby Flashcards
rrrrrr
encoding: utf-8
кодировка UTF - 8
naming convetions
соглашение о наименовании
snake_case (змея для переменных), camelCase(верблюд) в js, kebab - case ( шашлык)
123.is_a?(Тип)
Является ли Тип
возвращает boolean
Object.to_ s или
Object.to_ i или
Object.to_f
приведение к типу строка, число или дробное число
” #{a}”
интерполяция - вычисляется выражение внутри фигурных скобок и результат вычисления приводится к строке. Обязательно двойные кавычки.
Object.chomp
метод класса String отрезает ненужный перевод строки \n
!
Bang. ! в конце метода. Переопределяет переменную. Изменение значения этой переменной. Не у всех методов. Смотрим документацию.
блок кода
часть кода, которая куда то передается для последующего исполенения. Записывается между do и end или {}
10.times{|i|блок кода}
повторить блок кода 10 раз
10.upto(12){|i| блок кода}
10.downto(8){|i| блок кода}
повторять блок кода с 10 до 12 раз передвавая 10 в i
up прибавлять, down вычитать
?
в конце метода означает что метод возвращает значение типа boolean (просто обозначение)
Integer.even?
Integer.odd?
метод четное - верно
метод нечетное - верно
rand(1 .. n)
рандомное число в диапазоне от 1 до n
бе
loop do … end
бесконечный цикл, выход с помощью exit
тернарный оператор
go_rain? ? go_home() : go_street()
n > 4 ? htjdh(n) : hhhhg(n)
sleep n
делает паузу на n
@name
переменная экземпляра name позволяет получать доступ к переменной объявленной вне метода. Не является локальной для метода. префикс @. Область видимости класс. Класс main.
arr = []
arr = Array.new(10){‘dsa’}
массив - какой то набор данных (данные не обязательно должны быть одного типа), над которыми можно проводить какие то действия. arr «_space;123 или arr.push(123) - добавить объект в массив
arr.each do |item| блок кода do
пройти по каждому элементу массива или arr.each {|item| блок кода}. итерация массива.
%w (…. … ..)
запись набора слов в массив упрощенная
arr = Array.new(10){Array.new(10)}
arr =[[],[],[]]
Создание массивов в массиве
gem install
установка gema в консоле (библиотека или пакет).
arr[i][j][k]
arr[i]
Обращение к элементу массива массивов
arr[row][column]
ие
Array.empty?
метод, возращает пустой ли массив, на nil не проверяет (array.nil?)
в Rails !arr.blank, arr.present?
if true , if ‘’ , if ‘ ‘, if [] блок кода end
выполняется блок кода при if
array.size
array.lenght
Метод определяет количество элементов в массиве
array.count {|x| x==0}
Метод, который считает количество элементов удовлетворяющих условию. Пример x == 0. Можно записать arr.count(&:zero?)
Array.include?(x)
‘x’ - если символ
Метод, проверяющий х в массиве если есть выдает true.
Array.push()
Array.unshift()
arr.pop()
arr.shift()
добавление в конец массива, «
добавление в начало массива
извлечение из конца массива
извлечение из начала массива
x = : something
почти то же самое что и строки. экземпляры класса Symbol
отличия
Символ является неизменяемым (immutable), нельзя выполнить опасную операцию . Ссылки на одинаковые символы всегда одинаковы.
obj = {:ase => 23, :tyu = >45, ‘dffv’ => 67}
______________________________________________
obj = {}
obj[:ase] = 23
obj[:tyu] = 45
obj[:dffv] = 67
Объявление Хеша. Хеш - хранилище типа ключ-значение.
puts obj[:ase]
hh.keys
Выводит список ключей хэша
set = Set.new
Создание HashSet. Set отличается от хеша тем что хранит только ключи, значения не важны. Хранит уникальные, неотсортированые объекты. Для использования нужно подключить require ‘set’.
hh.each{|key,value| .. }
hh.each_key{|key| .. }
Пройти по хешу.
hh.dig(:a, :b)
возвращает nil, если ключ в цепочке не найден, возвращает nil
hh.has_key?(:abc)
проверяет наличие ключа в хеше, возвращает true или false
class Сar
end
Объявление класса Car
car1 = Car.new
Создание объкта класса(экземпляра)
def initialize …
end
Конструктор класса, метод всегда вызывается при создании объекта
REPL
read(читать) evaluate(выполнить) print(печатает результат) loop(цикл).
Это программа которая читает, выполняет, выводит результат и так по циклу. В Ruby это irb или Pry.
123.class
выводит класс объекта. В примере Integer
&&
||
и
или
exit
выход
(1 .. 5).class
класс Range. Отвечает за диапазон.
\n
\r
переход на новую строку.
управляющий символ, возвращает к началу строки. Затирая все предыдущее.
методы
def имя_метода (параметр)
end
это небольшие участки программы, которые можно использовать повторно.
Локальная переменная
любая переменная, объявленная внутри метода.
метод each. каким бывает.
метод итерации. в блок последовательно передается параметр.
для массива,
для String “hello”.each_char {|x| …}
для Range (1001..1005).each{}
arr = [], arr[[],[]]
arr = Array.new(n)
arr = Array.new(n){value}
Инициализация массива,
создание массива с n элементами, значения nil
создание массива с n элементами, и значением value)
arr.inspect
метод для вывода информации как в REPL c управляющими символами
arr.select{|e| условие e==1}
выбор элементов по условию
arr.reject{|e| условие …}
отсеивает элементы по условию
arr.take(n)
берет кол-во элементов n из начала массива
arr.any?{|e| условие …}
arr.all?{|e| условие …}
есть ли хотя бы одно совпадение с условием
все совпадения
arr.find_index{|e| условие …}
выводит индекс элемента совпадающего с условием
hh.each{|key,value| ….}
hh.each_key{|value| …}
Итерация хеша
def total(options={})
a = options[:a] || 0
b = options[:b] || 0
endцы
параметр принимает значение по умолчанию, позволяет использовать метод без ввода параметров. автоматом передается пустой хэш. Для переменных метода устанавливаются параметры по умолчанию поскольку если передается nill, то если nill присваивается 0.
x = nil || 123
логическое или если nil то выполняется следующее действие те присваивается 123. if nil || true -> если nil, то true
instance
экземпляр
attr_accessor
attr_reader
attr_writer
создает методы для чтения и записи переменной
для чтения
для записи
module MyModule
это участок программы, который можно включить (“Include”) в класс
субтипирование Subtyping
выделение подтипов одного типа.
методы класса
статические методы, методы класса
class Person
def self.say(‘name’)
end
Person.say(‘name’)