Skip to content

Instantly share code, notes, and snippets.

@kovenko
Last active January 30, 2016 19:29
Show Gist options
  • Select an option

  • Save kovenko/d4e6502b801fa3556137 to your computer and use it in GitHub Desktop.

Select an option

Save kovenko/d4e6502b801fa3556137 to your computer and use it in GitHub Desktop.
Ruby – язык регистрозависимый.
require "bigdecimal" #подключаем библиотеку bigdecimal
str.chomp! над строкой выполняется операция chomp! (для удаления хвостового символа новой строки).
Восклицательный знак в конце предупреждает, что операция изменяет значение самой строки, а не возвращает новую.
Негласное соглашение об именовании переменных
Имена локальных переменных, а также псевдопеременных self и nil начинаются со строчной буквы или со знака подчеркивания.
Глобальные переменные начинаются со знака доллара $.
Имена переменных экземляра (т.е. объекта) начинаются с @.
Имена переменных класса предваряются @@.
Константы пишутся как и во всех языках прописными буквами.
Комментарии
$df = 23 # это строчный комментарий.
=begin
Здесь ваш многострочный текст комментария
Здесь ваш многострочный текст комментария
Здесь ваш многострочный текст комментария
=end
Интерпретируемая строка
Это строка, в которую вы можете включить переменную и Ruby выдаст значение такой переменной в этой строке.
Переменная должна быть заключена в фигурные скобки и предварена символом #.
а = 3
b = 79
puts "#{а} умноженное на #{b} = #{а*b}" # 3 умноженное на 79 = 237
Экранированная строка
Строка понимается Ruby буквально.
value = 234
string = 'Вы ввели значение #{value}'
puts string #результат Вы ввели значение #{value}
Символы заключаются в одинарные кавычки.
Строка в сценариях
`ls -l`
Массивы
Day = ["Пн","Вт","Ср","Чт","Пт","Сб","Вс"]
print Day[1]
Специальный синтаксис массивов
%w[alpha beta gamma delta]
%w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
%w/am is are was were be being been/
Хэш (ассоциативный массив или словарь)
{1=>1, 2=>4, 3=>9, 4=>16, 5 = >25, 6=>36}
{"cat"=>"cats", "ox"=>"oxen", "bacterium"=>"bacteria"}
{"водород"=>1, "гелий"=>2, "углерод"=>12}
{"нечетные"=>[1,3,5,7], "четные"=>[2,4,6,8]}
{"foo"=>123, [4,5,6]=>"my array", "867-5309"=>"Jenny"}
Условные операторы if, elsif, else, unless
a = 27
if a == 27 then # then необязателен
puts "Условие соответствует"
else # иначе
puts "Условие не соответствует"
end
Конструкция позволяет писать без then:
if a == 27
puts "Условие соответствует"
end
Еще конструкция с ':' вместо then
if a == 27:
puts "Условие соответствует"
end
Еще конструкция через сраку, зачем?:
puts "Условие соответствует" if a == 27
lang= :ru #язык будет русским
if lang == :ru then
puts "Собака"
elsif lang == :en then
puts "dog"
else
puts "Язык не соответствует. Будет выведена Собака"
end
unless
unless (если не) - этот оператор является своеобразным антонимом if.
unless a == 27
puts "Условие не соответствует"
end
Еще конструкция через сраку, зачем?:
puts "Условие не соответствует" unless a == 27
Тернарный оператор
условие ? выражение, если истина : выражение, если ложь
label = otpusk == "да" ? "Удачного отдыха!" : "И на работе неплохо"
Оператор множественного выбора case
lang = :ru
returnValue =
case lang
when :en
:"dog"
when :es
:"perro"
when :ru
:"собака"
else
"собака"
end
puts returnValue
Циклы while
цикл с предусловием
k = 1
while k <= 100 do # do можно опустить
print k
k += 1
end
цикл с постусловием
k = 1
begin
print k
k += 1
end while k <= 100
Еще конструкция через сраку, зачем?:
k = 8000
k += 500 while k <= 30000
цикл until с постусловием
Блок кода выполняется до тех пор, пока условие не будет равно. Пользуются им, в основном, те, кто перешел на Ruby из Паскаля.
k = 8000
begin
k += 500
end until k == 30000
Цикл с параметром
for k in 1..10000 do # do можно опустить
выражение
end
И типа это можно записать так, только для целых чисел (руки оторвать рационализатору за такой систаксис).
10000.times {выражение}
Для объектов типа Integer (число), String (строка) и Date (дата)
1.upto (50) {|i| print i}
50.downto (1) {|i| print i}
Цикл loop
k = 1
loop do
if k >= 10000 then
break
end
k += 1
end
Операторы управления циклами break, redo и retry
break позволяет прервать выполнение цикла;
redo и retry заставляют цикл выполняться по новой;
next (схожее с continue в других языках) прерывает текущее выполнение итерации и запускает следующую итерацию.
Числа
a = -23
b = 1_000 # так можно описать тысячу. Это очень удобно, особенно, при программировании сайтов на RoR
с = 3.45 # дробное число
в = 6.02e23 # Число Авогадро, читается как 6,02, умноженное на 10 в степени 23
Системы счисления чисел
dec = 234 # десятичная система счисления
bin = 0b10111101 # двоичная система (основание 2)
oct = 0231 # переменная хранит восьмеричное число (основание 8)
hex = 0x23a1d # шестнадцатеричное число (основание 16)
прописные символы не будут ошибкой
Основные методы манипуляции с числами
x = 45
a = x.to_f # a = 45.0
a = Float(x) # или так
a = 3452 ** 23 # возведем в 23 степень
a = 81 ** 0.5 # извлечь корень из числа - ½ это 0.5 в десятичной дроби
Округление
a = 34.235
b = a.round # b = 34
b = (34.234).round # можно и так
c = eval(sprintf("%8.2f", a)) # c = 34.23
Операции сравнения
Как и везде >, <, >=, <=, !=, ==
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment