2012-05-07 5 views
0

Я пытаюсь использовать Array.select для выделения и удаления строк из базы данных, содержащей нежелательные элементы. Я не получаю ошибок, но это, похоже, не работает так, как хотелось бы.Что такое синтаксис для array.select?

Соответствующий код является последней частью:

totaltext = [] 
masterfacs = '' 
nilfacs = '' 

roomfacs_hash = {'lcd' => lcd2, 'wifi'=> wifi2, 'wired' => wired2, 'ac' => ac2} 
roomfacs_hash.each do |fac, fac_array| 
    if roomfacs.include? (fac) 
    totaltext = (totaltext + fac_array) 
    masterfacs = (masterfacs + fac + ' ') 
    else 
    nilfacs = (nilfacs + fac + ' ') 
    end 
end 

finaltext = Array.new 
text_to_delete = totaltext2.select {|sentences| sentences =~ /#{nilfacs}/i} 
finaltext = totaltext2.delete (text_to_delete) 
puts finaltext 
+0

Нет ошибок? В самом деле? – steenslag

+0

Пожалуйста, найдите время для отступов кода. – meagar

+0

Steenslag: yup, нет ошибок при запуске Meagar: Извините! Это отступом, но когда я вставил и попытался опубликовать его, он сказал мне «4 пробела!». и я думал, что это означает для каждой строки кода ... – Thomas

ответ

0

Это, вероятно, не работает, потому что delete не является цепной метод (возвращаемое значение является объект, который вы пытаетесь удалить успеха, или ноль, если не не измененный массив). Для упрощения кода просто используйте reject

finaltext = totaltext.reject{|sentence| nilfacs.any?{|fac| sentence =~ /#{fac}/i } } 
+0

Ahhhhh! Это объяснило бы это! Можно ли превратить {nilfacs} в массив и использовать его с reject? Мне нужно уметь отклонить любое предложение, содержащее хотя бы один фас из списка nilfac, и это та часть, которая заставила меня разрывать мои волосы в течение нескольких дней. И спасибо за ваше время! – Thomas

+0

Несомненно, просто сделайте nilfacs массивом для начала ('nilfacs = []') и добавьте его вместо выполнения конкатенации строк ('nilfacs << fac' вместо' nilfacs = (nilfacs + fac + '') ') , Затем вы можете использовать ['any?'] (Http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-any-3F) внутри блока 'reject'. –

+0

С нетерпением жду этого завтра. Очень ценю помощь! – Thomas

Смежные вопросы