2013-01-15 63 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