【发布时间】:2019-06-07 19:01:30
【问题描述】:
我的印象是以下代码应该返回搜索项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? 方法一定是错误的。
【问题讨论】:
-
您在使用
a+模式和foreach时?同样open_file将在你的循环中返回最后一次调用.includs?的结果。 -
“不工作”不是一个足够精确的错误描述,我们无法帮助您。 什么不起作用? 如何不起作用?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?
-
a+已修改。file_open正在返回空白;它应该返回word或no match。 -
@JörgWMittag 我很抱歉。
file_open应该返回 1. 文本文件中的行匹配搜索项word或 2.no match如果word不包含在任何地方。现在file_open只返回空白。 -
是的,
IO::foreach总是返回nil,文档清楚地说明了这一点。但是,你问的是String#include?,你有什么问题?
标签: ruby search ternary-operator