Введение в Ruby, настоящий объектно-ориентированный язык программирования

Ruby — это объектно-ориентированный серверный язык сценариев общего назначения. Первоначальной целью Ruby было создание настоящего объектно-ориентированного языка сценариев, которого в то время, по мнению создателя Ruby, Юкихиро «Маца» Мацумото, не существовало. Этот язык также был разработан, чтобы быть простым и легким в использовании, с объектной системой в качестве ядра языка, а не реализованной как просто функция языка. Это означает, что все в языке является объектом, и каждый объект может быть изменен. Это дает программисту возможность расширять поведение базового языка. Из-за этой простоты Ruby ориентирован на использование и точку зрения разработчика, а не системы, с которой он работает. Ruby допускает «простой в реализации» синтаксис, сохраняя при этом объектно-ориентированную архитектуру программирования. Ruby — это динамический язык, поэтому в нем нет системы типов, хотя ее можно реализовать с помощью RBS, который является более современной системой типизации, похожей на TypeScript.

«Люди разные. Люди выбирают разные критерии. Но если среди многих альтернатив есть лучший способ, я хочу поощрять его, делая его удобным. Вот что я пытался сделать». -Юкихиро Мацумото

Этот блог будет посвящен синтаксису Ruby, поэтому мы начнем с обсуждения ключевого слова «puts», которое выведет ваши данные на консоль. В качестве альтернативы вы также можете использовать ключевое слово «печать», и оно будет вести себя аналогично.

Комментарии и переменные, а также запись в консоль:

puts "Hey"     # prints => Hey
print "Planet" # prints => Planet!! 
puts "!!"

Вы можете инициировать комментарий с помощью символа «#» для однострочного комментария или «=begin» и «=end» для многострочного комментария.

# this is a single line comment 
=begin
this
is a 
multiple line comment
=end

Для переменных соглашение об именах чувствительно к регистру и может начинаться с букв или «_», а затем они могут включать буквы, цифры или другое «_». Основное соглашение гласит, что нужно начинать со слова в нижнем регистре, затем все дополнительные слова также пишутся в нижнем регистре, а затем каждое из них отделяется символом подчеркивания. Ключевого слова для переменной нет, но если вам нужна константа, вы можете написать переменную заглавными буквами, а если вам нужна глобальная переменная, вы можете обозначить ее знаком доллара.

my_example_variable

Существуют приемы приведения и преобразования простых типов данных с использованием методов «.to_i», «.to_f» и «.to_s», которые означают «в целое», «в плавающую» и «в строку» соответственно. . Это известно как литье и преобразование. Это работает, потому что каждое значение в Ruby считается «экземпляром» объекта, поэтому вы можете связывать методы с этими значениями для управления этими объектами.

 puts 3.14.to_i # to INT # prints => 3
 puts 3.to_f # to float  # prints => 3.0
 puts 3.0.to_s # to string # prints => 3.0

Строки:

Строки в ruby ​​имеют нулевой индекс и записываются в кавычках, их можно сохранять в переменную и манипулировать ими разными способами, будь то доступ к строковым символам или методы, встроенные в Ruby.

greeting = "howdy"
#indexed:   01234
puts greeting.length  # prints => 5
puts greeting[0]      # prints => h
puts greeting.include? "dy" # prints => true
puts greeting.include? "r"  # prints => false
puts greeting[1,3] # prints => owd
#first number is starting index and the second is the length of #chars you wanna grab

Как вы можете видеть выше, мы нашли длину строки, используя ее свойство «.length». Мы можем получить доступ к индексу через скобки. «.include?» метод вернет логическое значение в зависимости от того, введены ли следующие символы после «?» присутствуют в строке или нет. С помощью скобочной нотации мы также можем получить доступ к индексу с первой позиции, а второе переданное число будет обозначать, сколько дополнительных символов нужно включить в вывод.

Номера:

Мы можем выполнять базовые арифметические операции, а также другие математические методы в Ruby почти так же, как и в большинстве других языков сценариев. Мы можем выполнять обычные операции сложения, вычитания, деления и умножения, а также возведения в степень и нахождения остатка. Порядок операций работает так, как вы ожидаете. Вот несколько примеров:

puts 2 * 3 # prints => 6
puts 2**3 # prints => 8
puts 31 % 3 # prints => 1

Как видите, наши целые числа вычисляются правильно, мы можем округлить или найти абсолютное значение целого числа с помощью стандартных методов, которые существуют в Ruby.

num = -40.8
puts num.abs()  # prints => 40.8
puts num.round() # prints => 40
puts Math.log(0) # prints => -Infinity
puts Math.sqrt(144) # prints => 12

Существует классический синтаксис стиля «+=», который добавит любое значение к текущему значению, как если бы это значение уже существовало на этой стороне операнда.

num = 30
num += 20 
puts num # prints => 50 

Как видите, все ожидаемые математические операции ведут себя так, как и ожидалось, что удобно и просто для разработчика.

Массивы:

Массивы в Ruby ведут себя очень похоже на другие скриптовые языки, в том смысле, что они имеют нулевой индекс, а доступ к значениям массивов можно получить с помощью записи в квадратных скобках. Существуют также встроенные методы, такие как «.push», которые можно использовать для управления массивами и их значениями. Вы даже можете получить доступ к значениям в каждом индексе или к нескольким различным индексированным значениям с помощью обозначения скобок.

animals = []
animals.push("walrus")
animals.push("falcon")
animals.push("panda")
puts animals  # prints => walrus falcon panda 
puts animals.reverse # prints => panda falcon walrus
puts animals.sort # prints => panda falcon walrus
puts animals.include? "walrus" # prints => true
puts animals[0] # prints => walrus
animals.push(5)
puts animals[1..5] # prints => falcon panda 5

Работа с массивами в Ruby проста в реализации и эффективна для вашей программы. Если вы пришли из языка программирования, такого как JavaScript, большая часть манипуляций с массивами будет для вас очень похожей.

Пользовательский ввод:

Пользовательский ввод — это когда вы хотите, чтобы пользователь ввел что-то в ваше приложение, чтобы ваша программа отреагировала на это. Ключевое слово gets является ключевым для этого типа поведения в Ruby. Использование этого ключевого слова, связанного с переменной, предложит пользователю ввести значение в поле, указанное разработчиком, и все, что будет введено, программа сохранит в переменной, на которую воздействует ключевое слово «gets». Это ключевое слово «gets» добавляет в вашу программу некоторые встроенные динамические функции.

Функции:

Функции в Ruby объявляются с помощью ключевого слова «def», а затем имени, за которым следуют его параметры. Ключевое слово end указывает на закрытие тела функции, а тело содержит желаемую функциональность внутри, а также все необходимые возвраты для результата.

def add_nums(num1, num2=45)
    return num1 + num2
end
sum = add_nums(4, 10)
puts sum # prints => 40

Вы можете инициировать параметр по умолчанию, но его значение будет перезаписано, если во время вызова функции будет передан новый параметр, в противном случае он сохранит то же заданное значение.

Условные:

Условные операторы будут выполнять определенные строки кода в Ruby на основе логического значения, в которое разрешается условие. Вы можете инициировать их с помощью ключевого слова «если» и в скобках указать условие, которое вы хотите проверить. Вы также можете использовать «elsif» и «else», чтобы связать эти условия вместе.

is_cool = true
is_smart = true
if (is_cool and is_smart)
  puts "You are Royce"
elsif is_cool and !is_smart
  puts "You are a computer"
else
  puts "You are somethin else"
end
# prints You are Royce

Вы также можете сравнивать с операторами меньше, больше и строго равно почти так же, как и в любом другом языке программирования.

Объекты и классы:

На самом деле все считается объектом в Ruby, поскольку это полностью интегрированный объектно-ориентированный язык программирования. Примитивные типы данных на самом деле не существуют внутри, даже если они являются объектами.

class Show
  attr_accessor :title, :creator
def watchShow()
    puts "Watching #{self.title} created by #{self.creator}"
  end
end
movie1 = Show.new()
movie1.title = "Twin Peaks"
movie1.creator = "David Lynch"
movie1.watchShow() # prints => Watching Twin Peaks created by David                       #                                                              Lynch
puts movie1.title  # prints => Twin Peaks

Итак, мы инициируем класс с помощью ключевого слова «класс», а затем имени указанного класса. Определение атрибутов выполняется с помощью «attr_accessor», за которым следуют атрибуты, которые вы хотите добавить в свой класс. Эти атрибуты требуют двоеточия перед ними и разделяются запятой. Затем у нас есть определенный метод класса, в котором используется ключевое слово «я», чтобы обозначить, что мы действуем на атрибут в этом блоке классов. Затем мы можем присвоить значения этим атрибутам после запуска нового экземпляра класса Show, который мы создали, а затем вызвать любые методы или атрибуты, чтобы увидеть, что мы сконструировали.

Это большая часть основ, за исключением циклов, словарей и нескольких других ключевых вещей, к которым я, возможно, вернусь и добавлю позже. Это должно дать каждому хорошее представление о том, с чего начать создание приложения с использованием Ruby в любом качестве. Этот упрощенный язык очень мощный, особенно благодаря знаменитому фреймворку «Ruby on Rails», который придает языку еще большую модульность.

Источники: