0

我想检查check变量中是否存在“Listen 8581”。如果不是,我想添加“Listen 8581”。

我有这个代码:

if (found = check.grep(/Listen 8581/)).empty?
  run "#{try_sudo} sed -i '$ a\Listen 8581\n' #{ports_file}"
  puts "OOOps".red
end
4

2 回答 2

2
unless /Listen 8581/.match check
  # run your code here
end
于 2013-03-07T12:59:40.713 回答
1

作为一种风格上的事情,在条件中分配给一个变量是一个坏主意,因为它很容易解决错误和维护问题。调试大型程序时,很容易错过逻辑或丢失==. 先分配,然后检查清晰度:

found = check.grep(/Listen 8581/)
如果找到.empty?
  运行“#{try_sudo} sed -i '$ a\Listen 8581\n' #{ports_file}”
  放“OOOps”.red
结尾

我知道避免在堆栈上添加一个变量很诱人,但是如果您的代码嵌入在一个方法中,那么额外的变量将超出范围,这将是一个没有实际意义的问题。

在某些语言(例如 Perl 和 C)中,以这种方式编写是惯用的,但在我的职业生涯中,我曾多次看到这种情况会导致问题,因此我会避免这种情况。

于 2013-03-07T15:24:29.377 回答