0

「Listen8581」が変数に存在するかどうかを確認したい。存在しないcheck場合は、「Listen8581」を追加したい。

私はこのコードを持っています:

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

スタイル上の理由から、条件内で変数に代入することは悪い考えです。バグやメンテナンスの問題が発生しやすいからです。大きなプログラムをデバッグするとき、ロジックを見落としたり、欠落したりするのは簡単==です。最初に割り当ててから、明確さを確認します。

見つかった = check.grep(/Listen 8581/)
見つかった場合.空?
  「#{try_sudo} sed -i '$ a\Listen 8581\n' #{ports_file}」を実行します
  puts "OOOps".red
終わり

スタックに 1 つの変数を追加するのは避けたくなる気持ちはわかりますが、コードがメソッド内に埋め込まれている場合、余分な変数が範囲外になり、問題になることはありません。

Perl や C などの一部の言語では、このように書くのが慣用的ですが、これまでのキャリアで何度も問題を引き起こすのを見てきましたが、結果として避けていることでもあります。

于 2013-03-07T15:24:29.377 に答える