Size: a a a

2020 April 15

АП

Алексей Печерский... in RubyRush
Понимаю, что переменная одна и ссылка в памяти одна, данные как бы поменялись но ссылка  осталась старая, так как переменная не объявлялась заного
источник

m

moffire in RubyRush
Алексей Печерский
Понимаю, что переменная одна и ссылка в памяти одна, данные как бы поменялись но ссылка  осталась старая, так как переменная не объявлялась заного
все верно. Чтобы не создавалась новая переменная, ей нужно указать на саму себя при манипуляциях- self
источник

АП

Алексей Печерский... in RubyRush
Item в данном случае изменяется чере self. item = yield(self. item**2) - так? Вернуть после итерации просто item?
источник

m

moffire in RubyRush
Алексей Печерский
Item в данном случае изменяется чере self. item = yield(self. item**2) - так? Вернуть после итерации просто item?
self. item = self. item**2
источник

m

moffire in RubyRush
self. item**2 - эта часть кода достается при помощи yield из блока
источник

m

moffire in RubyRush
{ |el| el**2 }
источник

m

moffire in RubyRush
вот отсюда
источник

AA

Andrey Anikin in RubyRush
👏👏теперь намного понятнее, спасибо!
источник

m

moffire in RubyRush
Алексей Печерский
Item в данном случае изменяется чере self. item = yield(self. item**2) - так? Вернуть после итерации просто item?
вот так примерно будет если вы не хотите изменить текущий объект, а вернуть новый
источник

m

moffire in RubyRush
#   def select1
#     arr = []
#     for i in 0...size
#       el = self[i]
#       arr << yield(el)
#     end
#     arr
#   end
источник

m

moffire in RubyRush
а сам метод например такой [1, 2, 3, 4].select1 { |el| el.odd? }
источник

m

moffire in RubyRush
правда в новом массиве будет содержать true и false, но думаю смысл понятен
источник

VK

Vladislav Kushpil in RubyRush
Добрый день. Буквально недавно начал изучать Ruby. Дошел до 103 шага, но смалодушничал, посмотрел ответ. Но там не понимаю как считываются файлы из директории:
источник

VK

Vladislav Kushpil in RubyRush
def self.from_dir(dir_path)
   # Создаем пустой массив, куда будем складывать все найденные продукты
   products = []

   # Пройдемся по каждой паре ключ-значение из константы PRODUCT_TYPES и
   # поочередно запишем эту пару соответственно в переменные type и hash.
   #
   # Сначала в type будет :film, а в hash — {dir: 'films', class: Film}, потом
   # в type будет :book, а в hash — {dir: 'books', class: Book}
   #
   PRODUCT_TYPES.each do |type, hash|
     # Получим из хэша путь к директории с файлами нужного типа, например,
     # строку 'films'
     product_dir = hash[:dir]

     # Получим из хэша объект нужного класса, например класс Film. Обратите
     # внимание, мы оперируем сейчас классом, как объектом. Передаем его по
     # ссылки и вызываем у него методы. Такова природа руби: все — объекты.
     product_class = hash[:class]

     # Для каждого текстового файла из директории, например '/data/films/'
     # берем путь к файлу и передаем его в метод класса from_file, вызывая его
     # у объекта нужного класса.
     Dirh[dir_pat + '/' + product_dir + '/*.txt'].each do |path|
       products << product_class.from_file(path)
     end
   end

   # Вызываем конструктор этого же класса (ProductCollection) и передаем ему
   # заполненный массив продуктов
   self.new(products)
 end
источник

VK

Vladislav Kushpil in RubyRush
А конкретно       Dirh[dir_pat + '/' + product_dir + '/*.txt'].each do |path|
       products << product_class.from_file(path) поясните пожалуйста
источник

VK

Vladislav Kushpil in RubyRush
в своей реализации я считывал в массив  dir_f = Dir.entries(fd_path), а потом уже работал с ним.
источник

Э

Эдем in RubyRush
Это синоним Dir.glob
источник

VK

Vladislav Kushpil in RubyRush
спасибо
источник

АП

Алексей Печерский... in RubyRush
moffire
правда в новом массиве будет содержать true и false, но думаю смысл понятен
Спасибо огромное, более-менее понятно.
источник

RM

R M in RubyRush
Vadim Venediktov
Начали набирать группу на новый поток интенсива по Ruby on Rails:

https://goodprogrammer.ru/rails

Кто хотел записаться — велком. До 18 апреля действует промокод BEEMERALD на 4000 рублей.
спасибо что не bug merald)))
источник