in

Изучение языка программирования Ruby: от новичка до профессионала. Часть первая

Ruby прост по внешности, но он очень сложный внутри, как и наше человеческое тело.

Зачем изучать Ruby?

Для меня первая причина в том, что это красивый язык. Он всегда выражает мои мысли. Вторая — и основная причина — Ruby on Rails: фреймворк, который используется как в Twitter, Basecamp, Airbnb, Github, так и в многих других компаниях.

Введение

Ruby — это динамический язык с открытым исходным кодом, ориентированный на простоту и производительность. Он имеет элегантный синтаксис, который легко читать и писать

утверждает официальный сайт языка.

Давайте начнем с некоторых основ!

Переменные

Переменная — это ячейка памяти, которое хранит значение. В Ruby легко определить переменную и установить для нее значение. Представьте, что вы хотите сохранить номер 1 в переменную с именем one.

Давай сделаем это!

one = 1

Согласитесь, это очень просто!

two = 2
some_number = 10000

Вы можете присвоить значение любой переменной, которую вы создали. В приведенном выше примере переменная two имеет значение 2, а some_number хранит 10 000.

Помимо целых чисел, мы можем также использовать логические значения (true / false), строки, символы, float и другие типы данных.

# booleans
true_boolean = true
false_boolean = false

# string
my_name = "Leandro Tk"

# symbol
a_symbol = :my_symbol

# float
book_price = 15.80

Условные операторы

Условные операторы оценивают true или false. Если что-то верно, оно выполняет то, что находится внутри оператора. Например:

if true
  puts "Hello Ruby If"
end

if 2 > 1
  puts "2 is greater than 1"
end

2 больше 1, поэтому выполняется puts.

Оператор else будет выполняться, если выражение if равно false:

if 1 > 2
  puts "1 is greater than 2"
else
  puts "1 is not greater than 2"
end

1 не больше 2, поэтому код внутри оператора else будет выполнен.

Также есть оператор elsif. Вы можете использовать его следующим образом:

if 1 > 2
  puts "1 is greater than 2"
elsif 2 > 1
  puts "1 is not greater than 2"
else
  puts "1 is equal to 2"
end

Один из способов, из-за которого я действительно люблю писать на Ruby — использовать оператор if
после выполнения кода:

def hey_ho?
  true
end

puts "let’s go" if hey_ho?

Это так красиво и естественно. Это Ruby.

Циклы / Итераторы

В Ruby мы можем выполнять итерацию в самых разных формах. Я расскажу о трех итераторах: while, for and each.
While: Пока утверждение истинно, код внутри цикла будет выполнен. Таким образом, этот код будет печатать число от 1 до 10:

num = 1

while num <= 10
  puts num
  num += 1
end

For: вы передаете переменную num в цикл, и оператор for будет перебирать ее для вас. Этот код будет работать так же, как и предыдущий:

for num in 1...10
  puts num
end

Each: для массива значений он будет перебирать один за другим, передавая переменную циклу:

[1, 2, 3, 4, 5].each do |num|
  puts num
end

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

# for vs each

# for looping
for num in 1...5
  puts num
end

puts num # => 5

# each iterator
[1, 2, 3, 4, 5].each do |num|
  puts num
end

puts num # => undefined local variable or method `n' for main:Object (NameError)

Массив: коллекции / списки

Представьте, что вы хотите сохранить число 1 в переменной. Но, возможно, теперь вы хотите сохранить 2. И 3, 4, 5…  У меня есть способ сохранить все целые числа, которые я хочу, но не в миллионах переменных? У Ruby есть ответ!
Массив — это структура данных, которая может использоваться для хранения значений (таких как эти целые числа).

Так что давайте использовать его!

my_integers = [1, 2, 3, 4, 5]

Это действительно просто. Мы создали массив и сохранили его в my_integer. Вы можете спросить: «Как я могу получить значение из этого массива?» Хороший вопрос. Массивы имеют понятие, называемое индексом. Первый элемент получает индекс 0 (ноль). Второй получает 1 и так далее.

Ну вы поняли!

Массив

Используя синтаксис Ruby, это просто понять:

my_integers = [5, 7, 1, 3, 4]
print my_integers[0] # 5
print my_integers[1] # 7
print my_integers[4] # 4

Представьте, что вы хотите хранить строки вместо целых чисел, например список имен ваших родственников. Мой был бы примерно таким:

relatives_names = [
  "Anton",
  "Dmitriy",
  "Victor",
  "Andrey",
  "Kira"
]

print relatives_names[4] # Kaio

Работает так же, как c целыми числами. Прекрасно!
Мы только что узнали, как работают индексы в массиве. Теперь добавим элементы в структуру данных массива. Наиболее распространенными методами добавления нового значения в массив являются push и <<. Вам просто нужно передать элемент в качестве параметра push:

bookshelf = []
bookshelf.push("The Effective Engineer")
bookshelf.push("The 4 hours work week")
print bookshelf[0] # The Effective Engineer
print bookshelf[1] # The 4 hours work week

Метод << немного отличается:

bookshelf = []
bookshelf << "Lean Startup"
bookshelf << "Zero to One"
print bookshelf[0] # Lean Startup
print bookshelf[1] # Zero to One

Вы можете спросить: «Но он не использует точечную нотацию, как это делают другие методы. Разве это метод? Хороший вопрос! Напишем это:

bookshelf << "Hooked"

… похоже на это:

bookshelf.<<("Hooked")

Ну, хватит массивов. Давайте поговорим о другой структуре данных.

Хэш: структура данных с ключевыми значениями / коллекцией словарей

Мы знаем, что массивы индексируются номерами. Но что, если мы не хотим использовать числа в качестве индексов? Некоторые структуры данных могут использовать числовые, строковые или другие типы индексов. Структура хэш-данных является одной из них. Хэш представляет собой набор пар ключ-значение.

Он выглядит так:

hash_example = {
  "key1" => "value1",
  "key2" => "value2",
  "key3" => "value3"
}

Ключ — это индекс, указывающий на значение. Как мы получаем доступ к хеш-значению? Используя ключ!
Вот хэш обо мне. Мое имя, псевдоним и национальность — это ключи хэша.

ash_tk = {
  "name" => "Dmitriy",
  "nickname" => "dd",
  "nationality" => "Russian"
}

print "My name is #{hash_tk["name"]}" # My name is Dmitriy
print "But you can call me #{hash_tk["nickname"]}" # But you can call me dd
print "And by the way I'm #{hash_tk["nationality"]}" # And by the way I'm Russian

В приведенном выше примере я напечатал фразу обо мне, используя все значения, хранящиеся в хеше. Еще одна интересная вещь о хэшах заключается в том, что мы можем использовать что-угодно в качестве значения. Я добавлю ключ «возраст» и мой реальный целочисленный возраст (19).

hash_tk = {
  "name" => "Dmitriy",
  "nickname" => "dd",
  "nationality" => "Russian",
  "age" => 19
}

print "My name is #{hash_tk["name"]}" # My name is Dmitriy
print "But you can call me #{hash_tk["nickname"]}" # But you can call me dd
print "And by the way I'm #{hash_tk["age"]} and #{hash_tk["nationality"]}" # And by the way I'm 19 and Russian
view raw

Давайте научимся добавлять элементы в хэш:

hash_tk = {
  "name" => "Dmitriy",
  "nickname" => "dd",
  "nationality" => "Russian"  
}

hash_tk["age"] = 19
print hash_tk # { "name" => "Dmitriy", "nickname" => "dd", "nationality" => "Russian", "age" => 19 }

Нам просто нужно присвоить значение хэш-ключу. Ничего сложного здесь, не так ли?

На этом первая часть заканчивается. Во второй части мы обсудим основы объектно — ориентированного программирования в Ruby.

Перевод статьи » Learning Ruby: From Zero to Hero «

Как вы оцените нашу статью?

0 рейтинг
Upvote Downvote
IOS 11

15 изменений в iOS 11 о которых не рассказала Apple

ssd

Обзор Samsung Portable SSD T5