2012-01-27 50 views
0

我使用open4 :: background在shell上打開一個進程。 open4 :: background允許我使用任何類實現< <,each,read或to_s作爲stdx的句柄。基於字符串的類,將所有替換轉換爲Ruby中的連接?

我目前正在使用一個字符串,但每次在stdout上寫入時,它都會替換舊的值。考慮接受任何實現某些類字符串函數的類,是否有一個簡單的類可以用來創建新的寫入追加而不是替換?

我是Ruby的新手,我只是希望能夠插入此部分。如果任何人可以貢獻或指向我一個簡單的現有類爲此,我會很感激。

有一個線程解釋了這個示例實現在這裏:http://www.ruby-forum.com/topic/151316但我認爲這有點太複雜,我現在想要做的。作爲Ruby n00b,如果其他人可以爲我按摩樣本,我會感覺更舒適。

謝謝。

編輯:

每Phrogz的要求,這裏是我希望能夠做到:

app_str = AppendedString 
app_str = 'jeff' 
app_str = 'walls' 
puts app_str 
# should display "jeffwalls" 
+0

我不明白你想要什麼;請修改您的問題以包含您將運行的示例代碼以及您希望獲得的輸出。 – Phrogz 2012-01-27 19:06:37

+0

我們對操作符有一定的行爲假設,重新定義它們的預期行爲會導致很難調試和管理代碼。在某些情況下,實現或覆蓋'+'或'-'是有道理的,但我無法看到任何修改'='有意義的情況,特別是因爲我們已經有'+','+ ='和'<<'提供給我們提供類似的功能。 – 2012-01-27 20:09:13

回答

1

你想要的是使用StringIO作爲一個字符串捕捉所有的內容。

(如@約翰說,重複的任務,你不能趕上,但如果你只是想通過<<積累創造的所有的值,那麼這將做到這一點。)

1
app_str = AppendedString 
app_str = 'jeff' 
app_str = 'walls' 

這將需要重寫賦值運算符。不幸的是,Ruby不允許覆蓋賦值操作符。