我要檢查,如果「聽8581' 出現在check
變量,如果它是不,我要添加‘聽8581’。grep和不等於在if條件
我有驗證碼:
if (found = check.grep(/Listen 8581/)).empty?
run "#{try_sudo} sed -i '$ a\Listen 8581\n' #{ports_file}"
puts "OOOps".red
end
我要檢查,如果「聽8581' 出現在check
變量,如果它是不,我要添加‘聽8581’。grep和不等於在if條件
我有驗證碼:
if (found = check.grep(/Listen 8581/)).empty?
run "#{try_sudo} sed -i '$ a\Listen 8581\n' #{ports_file}"
puts "OOOps".red
end
unless /Listen 8581/.match check
# run your code here
end
是的... tats工作..感謝很多... – Linda 2013-03-07 13:16:59
我會寫'檢查[/聽8581 /]''的測試。 – 2013-03-07 15:26:04
作爲一個文體的事情,內部條件賦值給一個變量是一個壞主意,因爲它是一個容易打開的bug和維護問題在調試大程序很容易錯過邏輯或丟失==
。配第一然後檢查清晰度:
found = check.grep(/Listen 8581/) if found.empty? run "#{try_sudo} sed -i '$ a\Listen 8581\n' #{ports_file}" puts "OOOps".red end
我知道這是很有誘惑力,以避免在堆棧中加入一個變量,但如果你的代碼被嵌入的方法中,額外的變量就會掉出來的範圍,這將是一個無關緊要。
在某些語言(如Perl和C)中,這種寫法習慣於這種方式,但這是我在職業生涯中多次遇到問題的原因,也是我避免的結果。
好的,我用了一個vraible nw。但仍然使用megas編碼,非常感謝。 – Linda 2013-03-08 08:25:23
這很好。使用'check [/ Listen 8581 /]'將我的推薦更改添加到他的代碼中,您將可以編寫「類似Zen的」代碼,這正是我們在Ruby中所要做的。 – 2013-03-08 14:04:22
'grep'在一個可枚舉的對象上工作,就像一個Array,有點像'select'。我們無法判斷代碼中的「check」是一個標量/字符串,而您正試圖在Ruby中編寫Perl代碼,或者實際上使用「grep」。 – 2013-03-07 15:17:52