-
-
Save kovenko/d4e6502b801fa3556137 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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