[#47667] 文字列中に含まれる 8 進数表記 "\nnn" というパターンに正規表現でマッチさせたい — Kensuke Kaneko <kyanny@...>
金子健介と申します。
7 messages
2010/12/01
[#47684] ネットワークに流れるパケットのキャプチャーについて。 — Tetsuo Beppu <anfojp@...>
はじめまして。
5 messages
2010/12/10
[#47705] Windows(CP932)でのRuby1.9のirbの実行について — 中川貴 <nora1962@...>
はじめまして中川と申します。
4 messages
2010/12/22
[#47715] Windowsで1.9.2p136+zlibのインストール — AOKI Yoshihiro <aoki@...>
あおきと申します。
14 messages
2010/12/27
[#47716] Re: Windowsで1.9.2p136+zlibのインストール
— "U.Nakamura" <usa@...>
2010/12/27
こんにちは、なかむら(う)です。
[#47717] Re: Windowsで1.9.2p136+zlibのインストール
— AOKI Yoshihiro <aoki@...>
2010/12/27
あおきです。
[#47719] Re: Windowsで1.9.2p136+zlibのインストール
— "U.Nakamura" <usa@...>
2010/12/27
こんにちは、なかむら(う)です。
[#47720] Re: Windowsで1.9.2p136+zlibのインストール
— AOKI Yoshihiro <aoki@...>
2010/12/27
あおきです。
[ruby-list:47708] Re: Array#values_at behavior
From:
Kouya <kouyataifu4@...>
Date:
2010-12-23 08:46:54 UTC
List:
ruby-list #47708
kouya です。
返信ありがとうございます。
2010年12月23日14:29 Nobuhiro IMAI <nov@yo.rim.or.jp>:
>
>> ですので、説明を書くならば、
>> 「セレクターにRange オブジェクトを渡した場合、begin が範囲外の場合はその範囲は無視されます。
>> end が範囲外ならば、nil が代入され、それ以降の範囲は無視します。」
>> といったかんじでしょうか。
>
> 2文目は、
>
> 「Range の途中で配列の範囲外になると nil を代入?して、それ以降の範囲は
> 無視します。」
>
はい、それで大丈夫だと思います。
と思ったら、
[kouya@kmba01 17:18:14 ~]$ ruby-19-trunk -ve 'p [1,2,3].values_at(0..3)'
ruby 1.9.3dev (2010-11-07 trunk 29711) [x86_64-darwin10.4.3]
[1, 2, 3, nil]
# ここで最後にnil が入るのはselector の 3 が範囲外なのでOK
[kouya@kmba01 17:18:25 ~]$ ruby-19-trunk -ve 'p [1,2,3].values_at(3..5)'
ruby 1.9.3dev (2010-11-07 trunk 29711) [x86_64-darwin10.4.3]
[nil]
# selector の3 は範囲外であるが、処理を行わないのではなく nil がはいっている。
[kouya@kmba01 17:18:47 ~]$ ruby-19-trunk -ve 'p [1,2,3].values_at(4..5)'
ruby 1.9.3dev (2010-11-07 trunk 29711) [x86_64-darwin10.4.3]
[]
# selector の4 は範囲外であり処理を行わない。
というわけで、ここでいう範囲外というのは
「selector が配列の長さを超えたら(配列の長さが3だった場合は4、といったように)」
ということなのかもしれません。
ためしに、ソースコードの中にあるtest/ruby/test_array.rbをのぞいてみたんですけど
「範囲外」に関する追加情報は書いてなかったです。うーむ。
def test_values_at
a = @cls[*('a'..'j').to_a]
assert_equal(@cls['a', 'c', 'e'], a.values_at(0, 2, 4))
assert_equal(@cls['j', 'h', 'f'], a.values_at(-1, -3, -5))
assert_equal(@cls['h', nil, 'a'], a.values_at(-3, 99, 0))
end
def test_values_at2
a = [0, 1, 2, 3, 4, 5]
assert_equal([1, 2, 3], a.values_at(1..3))
assert_equal([], a.values_at(7..8))
assert_equal([nil], a.values_at(2**31-1))
end
--
kouya