[#9811] Ruby book — WATANABE Tetsuya <tetsu@...>

今日のひとこと(10/05)

22 messages 1998/10/05
[#9812] Re: Ruby book — matz@... (Yukihiro Matsumoto) 1998/10/05

まつもと ゆきひろです

[#9813] Re: Ruby book — "D.Kanda" <MAP2303@...> 1998/10/05

[#9815] Re: Ruby book — matz@... (Yukihiro Matsumoto) 1998/10/05

まつもと ゆきひろです

[#9827] Are there any NNTP Client Class? — Takeshi UME Imai <takeshi@...>

はじめまして。今井といいます。

17 messages 1998/10/05
[#9828] Re: Are there any NNTP Client Class? — aamine@... 1998/10/05

はじめまして、あおきともうします。

[#9869] man-1.1/Marshal.html — ttate@...

立石です。

47 messages 1998/10/07
[#9872] Re: man-1.1/Marshal.html — matz@... (Yukihiro Matsumoto) 1998/10/08

まつもと ゆきひろです

[#9880] comments on manual (Re: man-1.1/Marshal.html) — Motoyuki Kasahara <m-kasahr@...> 1998/10/08

SRA の笠原です。

[#9881] Re: comments on manual (Re: man-1.1/Marshal.html) — matz@... (Yukihiro Matsumoto) 1998/10/08

まつもと ゆきひろです

[#9909] Re: comments on manual (Re: man-1.1/Marshal.html) — Motoyuki Kasahara <m-kasahr@...> 1998/10/09

SRA の笠原です。

[#9936] Re: comments on manual (Re: man-1.1/Marshal.html) — matz@... (Yukihiro Matsumoto) 1998/10/09

まつもと ゆきひろです

[#9939] Re: comments on manual (Re: man-1.1/Marshal.html) — Shin-ichro Hara <sinara@...> 1998/10/09

原です。

[#9940] Re: comments on manual (Re: man-1.1/Marshal.html) — matz@... (Yukihiro Matsumoto) 1998/10/09

まつもと ゆきひろです

[#9941] Re: comments on manual (Re: man-1.1/Marshal.html) — Shin-ichro Hara <sinara@...> 1998/10/09

原です。

[#9942] Re: comments on manual (Re: man-1.1/Marshal.html) — matz@... (Yukihiro Matsumoto) 1998/10/09

まつもと ゆきひろです

[#9944] read(nil) (Re: comments on manual) — Shin-ichro Hara <sinara@...> 1998/10/09

原です。

[#9884] List of UserInterface Kits for Ruby ? — a.furudo@...

20 messages 1998/10/08
[#9906] Re: List of UserInterface Kits for Ruby ? — matz@... (Yukihiro Matsumoto) 1998/10/09

まつもと ゆきひろです

[#9885] 文字化け失礼、再送 — Akihiro Furudo <a.furudo@...>

26 messages 1998/10/08
[#9888] Re: 文字化け失礼、再送 — ttate@... 1998/10/08

立石です。

[#9897] お礼と、 Ruby/Gtk(i18n) について質問 — Akihiro Furudo <A.Furudo@...> 1998/10/08

[#9982] Re: お礼と、 Ruby/Gtk(i18n) について質問 — Daisuke Kanda <MAP2303@...> 1998/10/11

[#10320] Ruby/Gtk を FreeBSD にインストール (re:9982) — Akihiro Furudo <a.furudo@...> 1998/10/24

[#10328] Re: Ruby/Gtk を FreeBSD にインストール (re:9982) — Daisuke Kanda <MAP2303@...> 1998/10/25

[#9976] ruby:struct -> ext module -> ruby — Kikutani Makoto <kikutani@...>

きくたにです。

17 messages 1998/10/11

[#9999] ruby on HP-UX — AU6M-IWM@... (Iwama Misao)

20 messages 1998/10/12
[#10001] Re: ruby on HP-UX — matz@... (Yukihiro Matsumoto) 1998/10/12

まつもと ゆきひろです

[#10030] Ruby/Gtk text widget — TAKAHASHI Masayoshi <maki@...>

高橋です。

29 messages 1998/10/12
[#10035] Re: Ruby/Gtk text widget — Daisuke Kanda <MAP2303@...> 1998/10/12

[#10038] ruby/gtk method naming (Re: Re: Ruby/Gtk text widget) — "D.Kanda" <MAP2303@...> 1998/10/13

[#10067] Re: ruby/gtk method naming (Re: Re: Ruby/Gtk text widget) — Kazumi Okamoto <kazusan@...> 1998/10/13

岡本です。

[#10092] for が修飾子だったら — ARIMA Yasuhiro <fit0298@...>

有馬@FITECです。

46 messages 1998/10/14
[#10093] Re: for が修飾子だったら — matz@... (Yukihiro Matsumoto) 1998/10/14

まつもと ゆきひろです

[#10236] Array.html again — Motoyuki Kasahara <m-kasahr@...>

笠原です。こんにちは。

18 messages 1998/10/22
[#10237] Re: Array.html again — Kanda <MAP2303@...> 1998/10/22

[#10239] Re: Array.html again — matz@... (Yukihiro Matsumoto) 1998/10/22

まつもと ゆきひろです

[#10311] Re: 大規模プログラムの友 — m_seki@... (SEKI)

At 11:23 PM 98.10.23 +0900, Takashi Nakai wrote:

24 messages 1998/10/23
[#10312] Re: 大規模プログラムの友 — Takashi Nakai <nakai@...1.sys.to.casio.co.jp> 1998/10/23

ど〜も、(またしても)中井です。

[#10369] Re: 大規模プログラムの友 — matz@... (Yukihiro Matsumoto) 1998/10/27

まつもと ゆきひろです

[#10415] split — flare@... (Takashi Ikeda)

ふれあです。

20 messages 1998/10/28

[#10473] case with Class — MineroAoki <aamine@...>

あおきです。

46 messages 1998/10/29
[#10483] Re: case with Class — matz@... (Yukihiro Matsumoto) 1998/10/30

まつもと ゆきひろです

[#10521] Re: case with Class — aamine@... 1998/10/30

こんにちは。あおきです。

[#10523] Re: case with Class — gotoken@... (GOTO Kentaro) 1998/10/30

ごとけんです

[#10530] Re: case with Class — aamine@... 1998/10/31

あおきです。

[#10544] Re: case with Class — shugo@... (MAEDA Shugo) 1998/10/31

前田です。

[#10548] Re: case with Class — Wakou Aoyama <wakou@...> 1998/10/31

青山です。

[#10555] Re: case with Class — shugo@... (MAEDA Shugo) 1998/11/01

前田です。

[#10566] Re: case with Class — Wakou Aoyama <wakou@...> 1998/11/01

青山です。

[ruby-list:10507] Re: negative index of an array

From: matz@... (Yukihiro Matsumoto)
Date: 1998-10-30 08:37:32 UTC
List: ruby-list #10507
まつもと ゆきひろです

In message "[ruby-list:10454] Re: negative index of an array"
    on 98/10/29, Motoyuki Kasahara <m-kasahr@sra.co.jp> writes:

|笠原です。こんにちは。

|>   * start or endが負の時には「配列の長さ+(start or end)」と
|>     みなします
|> 
|>   * さらに「配列の長さ+(start or end)」がまだ負の時には0とみ
|>     なします.
|
|なるほど、こうなっているのですね。(同様に小田さんも 0 とみなされるとい
|うことは書かれていました。) 

しかし,この機会に良く考えてみると「まだ負だったら0にする」
というのは以下にも乱暴です.考え直した方が良いように思えてき
ました.

|ただ、個人的には、
|
|	a = ['a', 'b', 'c']
|	a[-6..-5] = ['X', 'Y']    # a => ['X', 'Y', nil, 'a', 'b', 'c']
|
|という結果になると、代入直後は a[-6..-5] が ['X'、'Y'] になるので、もっ
|とも自然だと思えるのですが、どうでしょう。

なるほど,後方だけでなく前方にも自動拡張するわけですね.

私が考えていたのは,参照については

  a = [1,2,3]
  a[-4]                 #=> 配列外なのでnil(現状は1)
  a[-4,0]               #=> 配列外なので[](現状も[])
  a[-4,1]               #=> 配列外なので[](現状は[1])
  a[-4,2]               #=> 配列外を除く[1](現状は[1,2])
  a[-4..-4]             #=> 配列外なので[](現状も[])
  a[-4..0]              #=> 配列外を除く[1](現状も[1])

で,代入については,

  * 前方の配列外への代入は例外

  * (負の位置からスタートする)範囲指定で配列に重なる部分があ
    れば,そこだけを置き換える

というのはどうだろうか,というものです.

前方への自動拡張は考えていませんでしたが,どうなんでしょう.
勝手にシフトするのは良くないというような気がしないでもないで
すが….

|>   * さらに「配列の長さ+(start or end)」がまだ負の時には0とみ
|>     なします.
|
|このルールはインデックスとして引数に srart..end や start, length をと
|るメソッドに限って採用されているのですよね?  delete_at(index) や
|self[nth] といったメソッドでは、このルールは適当されないようです。とく
|に `self[nth] = value' メソッドは例外が発生します。例外が発生するのは
|このメソッドだけのようです。

この辺も一貫性がないので揃えるようにしましょう.

|ところで、引数 start, length の length が負のときは、常に例外が発生す
|ると思っていたのですが、start の値によって挙動が変わります。
|
|	a = [0, 1, 2]
|	a[0, -2] = ['a', 'b']     # 例外: negative length 3 (IndexError)
|
|	a = [0, 1, 2]
|	a[4, -2] = ['a', 'b']     # a => [0, 1, 2, nil, 'a', 'b']
|
|これは何故なのでしょうか。

ミスフィーチャというかほとんどバグですね.長さチェックより配
列拡張のチェックが先に来てたせいです.負の長さはいつも例外に
するようにしましょう.

いずれにしてもこれへの対応は1.1dで行います.

                                まつもと ゆきひろ /:|)

In This Thread