[#380] bug report#3 and request#5 — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
1 message
1996/08/06
[ruby-list:437] Re: Q. repeat
From:
Date:
1996-08-27 11:22:32 UTC
List:
ruby-list #437
けいじゅ@SHLジャパンです.
In [ruby-list :00435 ] the message: "[ruby-list:435] Re: Q. repeat ",
on Aug/27 18:30(JST) matz@caelum.co.jp (Yukihiro Matsumoto) writes:
>これは
>
> 100.times {
> ...
> }
>
>があります.
やっぱり... 何かあったような気がしたんですよ!!
>|あと, 上記のイテレータは bignumやfloatにはありませんが, 何か理由がある
>|のでしょうか?
>実は上記のイテレータはNumericで定義されています.つまり実際
>にはBignumやFloatにもあります.ドキュメントが古いんです.今
では, 以下は多分バグです:
10000000000.upto(10000000010) {|i|
print i
}
がエラー出ます.
>0.99.2用のドキュメントを用意していますから(日本語・英語とも)
>ちょっと待ってください.
期待して待っています(^^;;
>つまり制御構造なのに end で終っていないという意味ですね.
そうなんです.
>どういう風にするのが良いと思いますか? 意見を聞かせてください.
そうですねえ... どうしたもんですかねえ...
> * 通常の制御構造は文として使われる事が圧倒的に多いが,イテ
> レータは比較的式として使われる事が多い
>
> 例: grep, sub/gsubなど
gsub(...){...} は利用させてもらいました. 感動しました(^^;;;
> * ユーザ定義の制御構造は特別な(目立つ)形式の方が望ましいだ
> ろう
ユーザは制御構造が定義できてはいけないという意見も聞きますが, それはさ
ておき.
> * 今の形式はイテレータの実態(暗黙のブロック引数が付加され
> ている)を想像しやすい
使う側にとっては, あまり関係ないのでは...
> * ruby-modeを使えばちゃんとインデントできるだろう
だからこそ end で終って欲しいんですけどね.
end
end
}
end
じゃなくて
end
end
end
end
という風にあまり考えずに終らせたいです.
> * 実はイテレータブロックには動的ローカルスコープの導入とい
> う働きも有り({}の中で初めて代入された変数の有効範囲はそ
> のブロックの中に限る),それを暗示する働きもある.ちなみ
> に for では動的ローカルスコープは導入されない
これは...
each(foo) {|elm| ...}
と
for elm in foo
...
end
とでは, 動きが違うことがあるのですか(?_?
>参考までにはるかな昔は
>
> do iter using foo
> ...
> end
>
>という構文でした.ちょっと見慣れない構文ですね.その頃には今
>のイテレータ構文はありませんでした.が,上にあげたような理由
>で今のようになっています.
これって, 引数がある時は
do iter(...) using foo
...
end
ですか?
>他の案として,互換性を捨てて今の制御構造を全部 { } を使った
>ものに変更するというものも考えられますが,2年前ならともかく
>今はちょっと受け入れがたいと感じています.
うーん. 私もせっかくなれてきたところだし, ちょっと...
1ついえることは,
each --> for
のように alias があれば良いとは思います. そうすれば, 関数的に使う場合
にはそのまま使えますよね.
多分気になっているのは,
10.upto(100) {
...
}
のような "本当の"イテレータの時だと思います.
だから, forを拡張すれば良いんじゃないかしら?
例えば,
for i in 10 do upto(100)
...
end
とか... ちょっと無理があるか...
__
..........................................石塚 圭樹@SHLジャパン(株)...
------------->アドレス変わりました!! e-mail: keiju@shljapan.co.jp <----