[#9642] Re: host.conf は参照しないの? — akira yamada / やまだあきら <akira@...>

15 messages 2000/05/09

[#9672] IO.popen — Koji Arai <JCA02266@...>

新井です。

22 messages 2000/05/13
[#9673] Re: IO.popen — Koji Arai <JCA02266@...> 2000/05/13

新井です。

[#9682] Re: IO.popen — matz@... (Yukihiro Matsumoto) 2000/05/14

まつもと ゆきひろです

[#9676] support mingw32 — WATANABE Hirofumi <eban@...>

わたなべです.

32 messages 2000/05/13
[#9678] Re: support mingw32 — Masaki Suketa <CQN02273@...> 2000/05/14

助田です.

[#9680] Re: support mingw32 — WATANABE Hirofumi <eban@...> 2000/05/14

わたなべです.

[#9686] Re: support mingw32 — Katsuyuki Komatsu <komatsu@...> 2000/05/15

小松です。

[#9687] Re: support mingw32 — WATANABE Hirofumi <Hirofumi.Watanabe@...> 2000/05/15

わたなべです.

[#9806] rescue variable syntax — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

40 messages 2000/05/24
[#9811] Re: rescue variable syntax — ARIMA Yasuhiro <fit0298@...> 2000/05/24

有馬です。

[#9814] Re: rescue variable syntax — matz@... (Yukihiro Matsumoto) 2000/05/24

まつもと ゆきひろです

[#9821] Re: rescue variable syntax — nobu.nakada@... 2000/05/25

なかだです。

[#9823] Re: rescue variable syntax — ARIMA Yasuhiro <fit0298@...> 2000/05/25

有馬です。

[#9833] Re: rescue variable syntax — matz@... (Yukihiro Matsumoto) 2000/05/25

まつもと ゆきひろです

[#9861] Re: rescue variable syntax — gotoken@... (GOTO Kentaro) 2000/05/25

ごとけんです

[#9866] Re: rescue variable syntax — matz@... (Yukihiro Matsumoto) 2000/05/25

まつもと ゆきひろです

[#9870] Re: rescue variable syntax — nagai@... 2000/05/26

永井@知能.九工大です.

[#9873] Re: rescue variable syntax — matz@... (Yukihiro Matsumoto) 2000/05/27

まつもと ゆきひろです

[#9812] Forward: Error in NT makefile (PR#7) — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

21 messages 2000/05/24
[#9820] Re: Forward: Error in NT makefile (PR#7) — Katsuyuki Komatsu <komatsu@...> 2000/05/25

小松です。

[#9842] Re: Forward: Error in NT makefile (PR#7) — WATANABE Hirofumi <Hirofumi.Watanabe@...> 2000/05/25

わたなべです.

[#9855] Re: Forward: Error in NT makefile (PR#7) — Katsuyuki Komatsu <komatsu@...> 2000/05/25

小松です。

[#9879] Re: Forward: Error in NT makefile (PR#7) — WATANABE Hirofumi <eban@...> 2000/05/28

わたなべです.

[#9857] $0 handling on NT — Katsuyuki Komatsu <komatsu@...>

小松です。

18 messages 2000/05/25
[#9869] Re: $0 handling on NT — nobu.nakada@... 2000/05/26

なかだです。

[ruby-dev:9635] Re: callargs([nil])

From: nobu.nakada@...
Date: 2000-05-08 12:35:22 UTC
List: ruby-dev #9635
なかだです。

At Mon, 8 May 2000 13:45:30 +0900,
matz@netlab.co.jp (Yukihiro Matsumoto) wrote:
> |  やっぱりうまくないです。Proc#call に Array 1個を渡したとき
> |の解釈として、
> |
> |(a) array は引数の配列
> |(b) array は単独の引数
> |
> |の2種類ありますが、(1)のときだけ(b)と解釈されますが、それ以外
> |は(a)と見なされます。(a)と解釈して欲しいときには(1'),(2') など
> |とする必要があります。
> |
> |(1)  proc{|x|}.call(array)	-> (b)
> |(2)  proc{|x,|}.call(array)	-> (a)
> |(3)  proc{|x,*y|}.call(array)	-> (a)
> |(1') proc{|x|}.call(*array)	-> (a)
> |(2') proc{|x,|}.call(*array)	-> (a)
> |(3') proc{|x,*y|}.call(*array)	-> (a)
> 
> うーん、なんだか良く分からないんですが、

  すいません、混乱してます。読み返したら自分でもよく分かりません。(^^;

> |  ほとんどの場合はこれでうまくいくのですが、array == [nil] のと
> |きだけは *[nil] -> nil -> [] と変換されて引数なしと見なされてし
> |まいます。
> 
> これは分かりました。で、いろいろ考えるに massign() で nil を
> 空配列に変換している部分がマズかろうという結論に達しました。
> 過去との互換性もあるので、callでの代入ときだけ空配列に変換し
> ないようにしてみました。あるいはそもそも  nil -> [] の変換は
> 不要かもしれません。が、要検証。

  massign() に関しては、nil 以外と同じ様に不足分を nil で補うという形
でもほとんどの場合では互換性を確保できるんじゃないでしょうか。よくわか
りませんが。

a,b = 1   -> (a,b) = [1,nil]

> パッチはこんな感じです。
> diff -u -1 -r1.41 eval.c
> --- eval.c	2000/05/01 09:41:14	1.41
> +++ eval.c	2000/05/08 04:44:58
> @@ -3439,3 +3439,3 @@
>      if (TYPE(val) != T_ARRAY) {
> -	if (NIL_P(val))
> +	if (!check && NIL_P(val))
>  	    val = rb_ary_new2(0);

  あぁ、こんな簡単に(^^;;。check ってそういう意味でしたか。

  ということで(謎)、以下のような感じで試したところ、make test では
「*a = nilで a == [] にならない」(これは当然ですが)という以外は一応通
るようです。

  あと nil -> [] となるのは、rb_ary_replace() がありますが、これを変え
ると結構問題になりそうな感じもします。

--- dist/eval.c	Mon May  1 09:08:54 2000
+++ build/eval.c	Mon May  8 21:14:30 2000
@@ -3429,10 +3429,7 @@
     list = node->nd_head;
 
     if (TYPE(val) != T_ARRAY) {
-	if (NIL_P(val))
-	    val = rb_ary_new2(0);
-	else
-	    val = rb_ary_new3(1, val);
+	val = rb_ary_new3(1, val);
     }
     len = RARRAY(val)->len;
     for (i=0; list && i<len; i++) {


-- 
そうだ 強気に ちょっと インチキに☆彡
    中田 "Bugるくらいがちょうどいいかも;-)" 伸悦

In This Thread