Skip to content

Latest commit

 

History

History
168 lines (129 loc) · 7.77 KB

lesson-11.md

File metadata and controls

168 lines (129 loc) · 7.77 KB

Урок 11

Поменять значения местами

a = 50
b = 20

a, b = b, a

puts a
puts b

var 2:

a = a + b
b = a - b
a = a - b

Обработка двумерного массива:

arr = [ [1, 2], [3, 4], [5, 6] ]

arr.each do |item|
  item.each do |x|
    puts x
  end
end

.each_with_index - метод заменяющий, что делали выше на прошлых уроках:

arr = %w{ Vova Masha Petya Alisha }

arr.each_with_index do |item, i|
  puts "#{i} #{item}"
end

Хеши (Hash):

Это структура данных Key value storage - хранилище ключ значение В других языках ещё называют Dictionary

hash = Hash.new

hash = {}
hash = { 'Mike' => '3538300',
        'Jessie' => '4348829'}

puts hash['Mike']

=> называется Hash Rocket

Используй одинарные кавычки, а двойные для интерполяции.

a = 2+2

puts "#{a}" #=> 4
puts '#{a}' #=> #{a}
options = {
  :font_size => 10,
  :font_family => 'Arial',
  :arr => [1, 5, 8]
  }

options[:font_size]
options[:font_family]
options[:arr][2]

для исследования используй .inspect и .class

Обращение к хешу по ключу и получаем значение

Добавление элемента в хеш:

hash = {}

hash['Alisha'] = 636400
hash[:foo] = 'Bar'

Решение задания "Телефонная книга"

# Enter name (Enter to stop):
# Enter phone number:
# add to hash

phonebook = {}

while true
  print "Enter name (Enter to stop): "
  name = gets.strip.capitalize

  if name == ""
    break
  end

  print "Enter phone number: "
  number = gets.strip

  phonebook[name] = number
end

puts "", "=== My Phone Book ==="
phonebook.each do |name, phone|
  puts "#{name} number is #{phone}"
end
puts "====================="
Важное замечание: в хеше через each элементы могут выводиться не по порядку. Хеш не предназначен для хранения элементов по порядку, в отличие от массива.

Вызвать нужный элемент из хеша:

phonebook['Alisha']

Решение задачи "Англо-русский переводчик":

words = {
  'dog' => 'собака',
  'cat' => 'кошка',
  'frog' => 'лягушка'
  }

while true
  print "Введите слово: "
  user_word = gets.strip.downcase

  if user_word == ""
    break
  end

  puts "Перевод: #{words[user_word]}"
  puts ""
end

У слова может быть несколько переводов, поэтому можно переписать программу, где значение хеша = массив.

fruits = []
fruits << {"name"=>"banana", "cost"=>10} << {"name"=>"apple", "cost"=>7}
#=> [{"name"=>"banana", "cost"=>10}, {"name"=>"apple", "cost"=>7}]

Следующий урок: https://github.com/krdprog/rubyschool-notes/blob/master/one-by-one/lesson-12.md

Навигация по конспектам (по-одному уроку в файле):

N N N N N N N N N N
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50