Как использовать .include? -Подобный метод в классе File в Ruby? - PullRequest
0 голосов
/ 03 февраля 2012

Я до сих пор изучаю Ruby и работаю над небольшим гемом, который позволяет вам что-то делать, пока в текущем файле есть определенный атрибут (в моем случае ''). Я взглянул на некоторые методы класса File и никогда не сталкивался с тем, что искал. Я понимаю, популярный метод Array .include?, и мне интересно, есть ли способ сделать это в большем масштабе, который применяет его к классу File. Кто-нибудь может указать File метод класса или сценарий, который делает это?

Пример:

# The Array class method scans the array for an item
arr = ['foo', 'bar', 'baz']
if arr.include?('foo')
  # (insert text)
end

Что мне нужно сделать:

if File.include?('')
  # My code
end

Спасибо!

Ответы [ 2 ]

3 голосов
/ 03 февраля 2012

Посмотрите:

if File.read(filename).include? str
  # do your thing
end

Внимание: этот код считывает весь файл в память.Лучше не применять его к огромным файлам.

Это более эффективный способ.

def my_include? filename, str
  File.open(filename, "r") do |file|
    file.each do |line|
      return true if line.include?(str)
    end
  end
  false
end
0 голосов
/ 03 февраля 2012

Вот еще один способ найти первое совпадение с файлом и остановиться на нем, не считывая весь файл:

File.foreach(filename).enum_for(:grep, /foo/).first
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...