在 ruby 中使函数参数不区分大小写

Make function parametres Case insensitive in ruby

这是我的函数:

def run_test_non_compilation(short_name,error_label)

@short_name = short_name

$error_label =  error_label

# more coding here
 end

我想要的是:

run_test_non_compilation('MDL_ConfigRS001',"HKI_load_cnf")

它应该给出与我使用

调用我的函数相同的结果

run_test_non_compilation('MDL_ConfigRS001',"hki_load_cnf")

run_test_non_compilation('MDL_ConfigRS001',"hki_LOAD_cnf")

等...

变量error_label在函数内部使用时必须不区分大小写。

我看到你检查你的 error_label 是否存在于你的文件中。要使其不区分大小写,只需使用 match 并传递给它 Regexp 忽略大小写:

if line.match(/#{error_label}/i)

可以使用 String#casecmp 进行不区分大小写的比较:

if($error_label.casecmp(some_string) == 0) {
  # do stuff
end

明确地说,无法 使字符串变量在 Ruby 中变得不区分大小写。您可以使用 some_string.casecmp(some_other_string) 比较字符串。这将 return 0 如果字符串相同,忽略大小写。

其次,你真的不想把它放在一个全局变量中。您可能是 PHP 开发人员吗?当您打算使用实例变量 (@) 时,从 PHP 移动到 Ruby 以创建全局变量 ($) 是很常见的。

无论如何,了解您打算如何处理该字符串会有很大帮助。如果您希望采用字符串的任何大小写,并在区分大小写的文件系统上找到一些配置文件,则必须枚举配置名称,然后执行类似 config_array.select {|a| $error_label.casecmp(a) == 0 } 的操作,其中 config_array 类似于['HKI_load_cnf'] 这才是真正的大写。虽然我不知道,但我真的很想了解你的问题。