Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写ruby函数来检查不区分大小写的单词;“错误”;并返回一个属性_Ruby_Function_File_Grep_Line - Fatal编程技术网

如何编写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