[#43713] Re: 演算子の優先順位(was: Re: irb と python のバグ?) — "きむらこういち" <hogemuta@...>

木村です。

20 messages 2007/07/14
[#43715] Re: 演算子の優先順位(was: Re: irb — TunTun-m <tntn@...> 2007/07/14

bc では次式の結果は 0.81 ではなく 0.8 になります。

[ruby-list:43674] Re: 質問 file の保守

From: Nobuyoshi Nakada <nobu@...>
Date: 2007-07-06 21:13:34 UTC
List: ruby-list #43674
なかだです。

At Sat, 7 Jul 2007 05:44:54 +0900,
ohrsts@lapis.plala.or.jp wrote in [ruby-list:43673]:
> ●方法1(Rubyレシピブック 163 の転用)
>  1。str="momotaro  :桃太郎              :000-123-otogi  "
>     を作る。(47バイト)
>  2。テンポラリーファイルに該当レコードの手前までをコピーする。
>  3。str をテンポラリーファイルに puts する。
>  4。テンポラリーファイルに該当レコード以降を追加する
>  5。テンポラリーファイルを元のファイルにリネームする。
>   (レコード位置が何処にあっても良いのなら他にも、、、。)

テキストファイルの操作に関しては、もっとも順当な手順といえるん
ではないでしょうか。

> ●方法2
>  1。str="momotaro  :桃太郎              :000-123-otogi  "
>     を作る。(47バイト)
>  2。f=open("tel","r+b") として該当レコードまで読みすすむ。
>  3。f.seek(-48,File::SEEK_CUR);f.puts(str);
>      を実行する。(1 record 分バックして str を追加)
>  4。file を close して終了する。

この方法を採るなら、読み書きの際はgetsやputsではなく、read(48)
やwrite/printを使うほうがいいと思います。複数の場所で使うなら、
Fileをラップするなり継承するなりした専用のクラスを作るとか。

> ●方法3
>  1。 (具体的には、整理できないのですが)
>    file 全体を読み込んで、1行が、1要素になる配列 ar を作る。
>  2。該当要素を操作して、望みのレコードに変更する。
>  3。ar の1要素が1行となるように、file に書き込む。

操作する要素が多いとか、プログラムを通して使うというなら、むし
ろこれが効果的でしょう。保存は適当なタイミングでまとめて行うと
か、at_exitで終了時に行うとか。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread