2013-01-15 64 views
1

我想覆蓋system()函數。那可能嗎?如何覆蓋系統功能

+1

你爲什麼要這麼做?你想實現什麼? – 23tux

+0

評論者23tux解釋說,你可以通過定義它來「monkeatch」它。但你[真的不想覆蓋系統()。真的不是](http://stackoverflow.com/a/44712​​02/73673)。 – berkes

+0

這是一件壞事。你問你是否可以向你展示你可能不知道你爲什麼不應該。 –

回答

3

當然,你可以覆蓋在Ruby中幾乎一切(是否有用與否):

system "ls /" # returns "/etc /var...", normal behaviour 

def system args 
    puts args 
end 

system "ls /" # returns "ls /" 
+0

我在哪裏可以放置該代碼? – KKK

+0

我不知道你的項目,但如果你想使用它的全球性:在你第一次調用系統之前;)在一個初始化例如,或在你的開始或任何 – 23tux

-1

如果不要緊使用system可言,那麼你可以使用反引號。反引號執行該命令並將輸出作爲字符串返回。

可以值然後分配給一個變量,像這樣:

output = `ls` 
p output