.включают? не срабатывает при чтении текстового файла - PullRequest
0 голосов
/ 13 января 2019

У меня сложилось впечатление, что следующий код должен вернуть либо элемент поиска word, либо сообщение no match - как указано троичным оператором. Я не могу диагностировать, где / почему включить? метод не работает.

class Foo

def initialize(word)
    @word=word
end

def file_open
    IO.foreach('some_file.txt') do |line|
        line.include?(@word) ? "#{@word}" : "no match"
    end
end

end

print "search for: "
input = gets.chomp.downcase

x = Foo.new(input)
puts x.file_open

input существует в some_file.txt. Мой синтаксис троичного оператора также правильный. IO хорошо читает текст (я тоже пробовал File.open () и у меня была такая же проблема). Поэтому я, должно быть, ошибаюсь с моим include? методом.

1 Ответ

0 голосов
/ 13 января 2019

Вам необходимо контролировать возвращаемое значение. file_open, определенное выше, всегда возвращает nil. Троица будет выполнена правильно, но ничего не сделано с ее значением. Вместо этого вы можете сделать следующее:

class Foo
  def initialize(word)
    @word=word
  end

  def file_open
    IO.foreach('some_file.txt') do |line|
        return line if line.include?(@word)
    end
    return "no match"
  end
end
...