0

open4::backgroundを使用してシェルでプロセスを開きます。open4 :: backgroundを使用すると、<<、each、read、またはto_sを実装する任意のクラスをstdxへのハンドルとして使用できます。

現在文字列を使用していますが、stdoutで書き込みが発生するたびに、古い値が置き換えられます。特定の文字列のような関数を実装するクラスの受け入れを考慮して、置換の代わりに新しい書き込みを追加するために使用できる単純なクラスはありますか?

私はRubyを初めて使用し、この部分をプラグインしたいと思っています。誰かがこのための単純な既存のクラスに貢献したり、指摘したりできる場合は、それをいただければ幸いです。

http://www.ruby-forum.com/topic/151316: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"
4

2 に答える 2

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

これには、代入演算子をオーバーライドする必要があります。残念ながら、Ruby は代入演算子のオーバーライドを許可していません。

于 2012-01-27T19:28:22.957 に答える
1

必要なのは、StringIOすべてのコンテンツを文字列としてキャプチャするために使用することです。

(@John が言うように、代入の繰り返しはキャッチできませんが、それによって作成されたすべての値を蓄積したい場合は、これで十分です<<。)

于 2012-01-27T19:37:56.407 に答える