Как получить доступ к родительской коллекции в каждом закрытии? - PullRequest
0 голосов
/ 12 сентября 2010

Я искал что-то, чтобы заменить *parent*.

%w[apple apples].each do |w|
   next if *parent*.includes? w + "s"
   puts w
end

# output: apples

Ответы [ 2 ]

4 голосов
/ 12 сентября 2010

each является соглашением, отсутствует понятие «родительской коллекции» для блоков в целом или для блоков, передаваемых каждому в частности.Просто назовите его, например,

(parent = %w[apple apples]).each do |w|
  next if parent.includes? w + "s"
  puts w
end

Вы можете добавить другой метод для передачи родителя,

Например,

module Each2
 def each2
   each { |elem| yield(self, elem) }
 end
end

include Each2

%w[apple apples].each2 do |parent, w|
  next if parent.includes? w + "s"
  puts w
end

Но это довольно глупо.

4 голосов
/ 12 сентября 2010

Нет способа сделать это. Сначала вам нужно дать имя коллекции:

fruits = %w[apple apples]
fruits.each do |w|
   next if fruits.includes? w + "s"
   puts w
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...