如何编写ruby函数来检查不区分大小写的单词;“错误”;并返回一个属性
下面给出了我编写的函数。它能正常工作吗?否则请纠正我如何编写ruby函数来检查不区分大小写的单词;“错误”;并返回一个属性,ruby,function,file,grep,line,Ruby,Function,File,Grep,Line,下面给出了我编写的函数。它能正常工作吗?否则请纠正我 def log_file( file ) parsed_data = {} read_lines( file ) {|line| if line.match(/error/i) parsed_data[:property] = "error" end } return parsed_data end 函数可能正常工作,
def log_file( file )
parsed_data = {}
read_lines( file ) {|line|
if line.match(/error/i)
parsed_data[:property] = "error"
end
}
return parsed_data
end
函数可能正常工作,但由于您使用的是外部定义的方法,例如
读取行
,因此无法判断
而且,它不是非常惯用的Ruby(特别是对于显式返回和多行{}
块)
这里有一个可能的替代方案
def def log_file(file)
File.open(file).each_line do |line|
return({ property: "error" }) if line =~ /error/i
end
{}
end
而且,如果“error”字符串是硬编码的,那么返回散列对我来说没有多大意义。只需返回“error”或nil
还是真/假
def success?(file)
File.open(file).each_line do |line|
return false if line =~ /error/i
end
end
if success?(file)
# no error
else
# error
end
让我们换一种方式来做:如果它不能正常工作,问一个问题。否则就不要了。@Stefan抱歉。我不熟悉ruby编码。我试图在irb终端执行它。我无法验证它,因为我正在处理这部分代码。因此,我怀疑它是否会按预期返回值。该方法看起来是自包含的,可以在irb中进行测试(除了
read_lines
方法,但您可以将其剪切并粘贴到irb中,或者只在那里加载源文件,例如load foo.rb
)。是什么阻止你验证它?你有任何预期输出的示例输入吗?NeilSlater我正在研究它。谢谢
def success?(file)
File.open(file).each_line do |line|
return false if line =~ /error/i
end
end
if success?(file)
# no error
else
# error
end