Bug #5502
範囲式の例がおかしい
| Status: | Rejected | Start date: | 10/28/2011 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | - | % Done: | 0% |
|
| Category: | doc | |||
| Target version: | - | |||
| reporter: | ruby_version: |
Description
http://doc.ruby-lang.org/ja/1.9.2/doc/spec=2foperator.html#range
> 例:
>
> 1 .. 20
> /first/ ... /second/
意図的にやっているかもしれないけど、
わざわざエラーとなる /first/ ... /second/ を例に挙げなくてもいいと思いますぽよ。
"first" ... "second" の方がまだよかと。
# ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
# cat test.rb
1 .. 20
/first/ ... /second/
# ruby test.rb
test.rb:2:in `<main>': bad value for range (ArgumentError)
(rootなのはワケアリ)
History
Updated by okkez (okkez _) 7 months ago
パッチが欲しいです。。。
Updated by 5.5 (5 5) 7 months ago
- Category set to doc
条件式が書けるところには /first/ ... /second/ が書けますね:
http://doc.ruby-lang.org/ja/1.9.3/doc/symref.html#period
でも,Range オブジェクトを生成するリテラル表記のつもりで使おうとすると bad value for range (ArgumentError) になるのですね。
if /first/.../second/ みたいな書き方って,Ruby の文法がそういうふうになっているんでしょうか?
Updated by no6v (Nobuhiro IMAI) 7 months ago
$ ruby -e 'puts *1..9' | ruby -ne 'print if /3/../7/' 3 4 5 6 7
のように使えます。
Updated by 5.5 (5 5) 7 months ago
いま気づきましたが,問題の箇所
http://doc.ruby-lang.org/ja/1.9.2/doc/spec=2foperator.html#range
の「条件式としての範囲式」に余すところ無く説明がありますね。
すみません,ぜんぜんここを読まずに書いてしまいました。
なので,現状でも誤りではないと思います。
ただ,この例を理解するためには,〈条件式に正規表現リテラルが書かれているときは match($_) の意味になる〉ということを理解していなければなりません。
知らないと,「正規表現から正規表現までの範囲ってなんじゃらほい?」となってしまいます。
また,Ruby 的に推奨される書き方でもない(?)と思います。
/first/ ... /second/ は削除するか,"a".."z" みたいなのでいいのではないでしょうか。
Updated by azarashi (Hiroshi Koyama) 7 months ago
>>5 5氏, Nobuhiro IMAI氏
なるほどよくわかりましたぽよ。
無知ですみませんでしたぽよ。
/first/../second/ は十分有用であることがわかりましたぽよ。
このIssueはクローズしてくださっても問題ありませんぷよ。
Updated by sho-h (Sho Hashimoto) 6 months ago
- Status changed from Open to Rejected
上記のようですので、close (ITS 的には reject)しておきますね。