IORubyでオブジェクトを使用するための適切な「コントラクト」またはベストプラクティスについて疑問に思っています。
IOオブジェクトを渡すヘルパーメソッドがたくさんあります。現在、IOオブジェクトを消費する私の低レベルのメソッドについては、をrewind実行した後にそれらを確認しますread。これは気持ちがいいです。オブジェクトの変更を気にせずに、これらのメソッドを複数回呼び出すことができIOます。
契約の可能性は次のとおりです。
上記のように...メソッドがオブジェクトを呼び出す場合(または別の方法
readでIOオブジェクトから読み取る場合)、完了したらrewindそれを行う必要があります。IOこれにより、オブジェクトが効果的に元の状態に復元されます。これは、引数を変更しないというRubyの規則によって動機付けられています。呼び出し元のメソッドは、低レベルのメソッドが呼び出し中であることを認識し、
readそれに応じて調整する必要があります。(別の言い方をすれば、消費者は注意してください!)
もしあれば、どれが一番いいですか?なんで?
(簡単な補足: 。io_copy = io.dupと同じようには機能しませんio.rewind。)
そして...スレッドセーフについて話すなら、ボーナスポイントに値します!