[#6617] Re: IPv6 ruby — Jun-ichiro itojun Hagino <itojun@...>

26 messages 1999/04/15
[#6672] Re: IPv6 ruby — matz@... (Yukihiro Matsumoto) 1999/04/28

まつもと ゆきひろです

[#6673] Re: IPv6 ruby — itojun@... 1999/04/28

[#6674] Re: IPv6 ruby — matz@... (Yukihiro Matsumoto) 1999/04/28

まつもと ゆきひろです

[#6675] Re: IPv6 ruby — itojun@... 1999/04/28

[#6676] Re: IPv6 ruby — matz@... (Yukihiro Matsumoto) 1999/04/28

まつもと ゆきひろです

[#6677] Re: IPv6 ruby — itojun@... 1999/04/28

[ruby-dev:6544] Re: substring,subarray

From: Inaba Hiroto <inaba@...>
Date: 1999-04-04 13:50:45 UTC
List: ruby-dev #6544
稲葉です。

ttate@jaist.ac.jp wrote:
> 
> 立石です。
> 
> ruby-1.3.2(1.3.1の一部のバージョン)では
> 
> [][0..-1]     => nil
> [0][0..-1]    => [0]
> [0][0..-2]    => nil
> 
> ""[0..-1]     => nil
> "a"[0..-1]    => "a"
> "a"[0..-2]    => nil
> 
> という動作なのですが、これはバグなんでしょうか?
> それとも意図された動作なんでしょうか?

まつもとさんの[ruby-dev:6275]をみると「迷っているけどとりあえずそうし
てある」という意味で「意図された動作」だと思います。

#つまり議論して納得してもらえれば仕様変更してもらえます:->

> ;; 現状だとftplib.rbでエラーがでます。(^^;

例えば以下でlineにnilが代入される場合があるのがまずいのですよね?

    if line[-2, 2] == CRLF
      line = line[0 .. -3]
    elsif line[-1] == ?\r or
        line[-1] == ?\n
      line = line[0 .. -2]
    end

互換性を考えると

   arr[0 .. -(arr.size+1)] == []
   str[0 .. -(str.size+1)] == ""

が必要な例だと思います。

もし新しい仕様を受け入れるなら、
「line[0..-3]」は「line[0..-3].to_s」か「line[0...-2]」
と書くことになるでしょう。
(けどこの場合に限っていえば「line[-2,2]=""」とすべきなのでは?)

調べていてバグを見つけました。(990311以降調べてなかった...)

  ruby -ve '"12"[ 0.. 2]="0"'
  ruby 1.3.2 (1999-04-02) [i686-linux]
  Segmentation fault

--
			稲葉 浩人  <inaba@st.rim.or.jp>

In This Thread