[#697] ++[Re: dylan [Re: swap values(Re: call by reference)]] —
けいじゅ@SHLジャパンです.
1 message
1996/10/01
[#869] Append Member — Kouki Higuchi <luke@...>
Please let me be a participate.
1 message
1996/10/20
[#895] sleep eternaly on BOW(Re: ruby 0.99.2-961023 available) — Shin-ichiro Hara <sinara@...>
原です。
6 messages
1996/10/24
[#906] [REQ]Get Strings!<3> GETS, SUB — Shin-ichiro Hara <sinara@...>
原です。
5 messages
1996/10/27
[#907] [REQ]Get Strings!<4> SPLIT — Shin-ichiro Hara <sinara@...>
原です。
6 messages
1996/10/27
[#920] bug report(each) — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
8 messages
1996/10/29
[#928] Re: hajimemashite — Itsuro Saito <saito@...>
斎藤@東大電子情報です.
9 messages
1996/10/29
[#938] ruby 0.99.3-961030 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです.
7 messages
1996/10/30
[#954] Rational — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
23 messages
1996/10/30
[#955] Re: Rational
— matz@... (Yukihiro Matsumoto)
1996/10/30
まつもと ゆきひろです.
[#968] Re: Rational
—
1996/10/31
けいじゅ@SHLジャパンです.
[#970] Re: Rational
— matz@... (Yukihiro Matsumoto)
1996/10/31
まつもと ゆきひろです.
[#956] Re: Rational[coerce(Re: ruby 0.99.3-961030 available) ] — Shin-ichiro Hara <sinara@...>
原です。
4 messages
1996/10/30
[#965] ruby-mode — Yasuo OHBA <jammy@...>
大庭@SHLJapanです.
6 messages
1996/10/31
[ruby-list:906] [REQ]Get Strings!<3> GETS, SUB
From:
Shin-ichiro Hara <sinara@...>
Date:
1996-10-27 10:26:43 UTC
List:
ruby-list #906
原です。
(7)String#gets がほしい。
これはつまりリードポインタつき String クラスがあったらなあ、とい
うことです。tell, seek が出来たりするわけです。
このクラスは結構使い出があるんではないかと思うのですが、例えば複行
レコードの各フィールドに番号を振りたいとき、こう書ける。
$/ = "\n\n"
while record = gets
ln = 1
while field = record.gets("\n")
print ln,":", filed, "\n"
ln += 1
end
end
ストリームを gets で切り分けるように文字列も gets で分けるわけです。
さらに field を , で分けたいときは while subfield = field.gets(",") ..
などとできるので、while が自然な形で並びます。更に悪乗りして
while record = (IO or String).gets(""\n\n", "\n", ",")
# record は 2 重配列
end
とか、
record = (IO or String).readlines("\n\n", "\n", ",") # 3 重配列
とかはどうでしょうか。split という名前でもいけど。
しかし $_.gets が $_ = $_.gets の意味になったらまずい。ほかの +, [a,b]
などのメソッドをポインタにどう作用させたらいいか考える必要があるけど。
#と、ここまで書いて、ちょっと違うけど String#each_line というがある
#ことに気付きました。String#each_line(RS) ができれば、このイテレー
#タで済む場合もありますね。
(8)イッキ sub, gsub がほしい。
ruby には、strip などという便利なメソッドがあるけど、これは、sub で
書くと gsub(/^\s+|\s+$/, '') となります。しかしこれが sub でなくて
gsub であることは、本来の意味から考えるとかっこ悪い。sub を2つ並べ
るのはメンドくさい。これを
sub(/^\s+/, '', /\s+$/, '')
と書くわけです。さらに、こっちが重要なんですが、
gsub(/a/, 'b', /b/, 'c') # a -> b, b -> c だが a -> c とはならない
などとできる。gsub(Hash) もあり。順番つきとしたら gsub(Array1, Array2)
の方がいいかな。イテレータにするときの仕様が難しいかしら。
(つづく)
----------------------------------------------------------
原信一郎