[#837] request SCAN — Shin-ichiro HARA <sinara@...>

原です。

25 messages 1997/11/14
[#838] Re: request SCAN — matz@... (Yukihiro Matsumoto) 1997/11/14

まつもと ゆきひろです

[#839] Re: request SCAN — Shin-ichiro HARA <sinara@...> 1997/11/14

原です。

[#840] Re: request SCAN — Shin-ichiro HARA <sinara@...> 1997/11/14

原です。

[#841] Re: request SCAN — Shin-ichiro HARA <sinara@...> 1997/11/14

原です。

[#843] Re: request SCAN — matz@... (Yukihiro Matsumoto) 1997/11/14

まつもと ゆきひろです

[#844] Re: request SCAN — Shin-ichiro HARA <sinara@...> 1997/11/14

原です。

[#845] Re: request SCAN — matz@... (Yukihiro Matsumoto) 1997/11/14

まつもと ゆきひろです

[#864] [Req] Proc.new — Shin-ichiro HARA <sinara@...>

原です。

53 messages 1997/11/19
[#865] Re: [Req] Proc.new — matz@... (Yukihiro Matsumoto) 1997/11/19

まつもと ゆきひろです

[#866] Re: [Req] Proc.new — Shin-ichiro HARA <sinara@...> 1997/11/19

原です。

[#867] Re: [Req] Proc.new — matz@... (Yukihiro Matsumoto) 1997/11/19

まつもと ゆきひろです

[#875] Re: [Req] Proc.new — Shin-ichiro HARA <sinara@...> 1997/11/20

原です。

[#877] Re: [Req] Proc.new — shugo@... (Shugo Maeda) 1997/11/20

前田です。

[#879] Re: [Req] Proc.new — Shin-ichiro HARA <sinara@...> 1997/11/20

原です。

[#886] Re: [Req] Proc.new — shugo@... (Shugo Maeda) 1997/11/20

前田です。

[#890] Re: [Req] Proc.new — keiju@... (石塚圭樹 ) 1997/11/20

けいじゅ@日本ラショナルソフトウェアです.

[ruby-dev:866] Re: [Req] Proc.new

From: Shin-ichiro HARA <sinara@...>
Date: 1997-11-19 08:59:24 UTC
List: ruby-dev #866
原です。

> まつもと ゆきひろです
> |(1)Proc.new(x) で Proc.new{|t| send(x, *t)}
> |みたいな意味にしてしまうのはいかが?
> 
> 意味がひとめで分からないんで,却下 ^^;;;

やっぱり。(^^;

Perl では(Perl、Perl とうるさいけど) &foo という関数があるとき、
$bar = \&foo と簡単にとれて &$bar() として使えるわけですよね。こ
れを ruby ではどう書きますか?と「Perl ユーザのための FAQ」には
出てくるはずです。(ほんとか?)それに対して、実はメソッドはオブ
ジェクトにできて、

bar = Proc.new{ |*x| foo(*x) }
bar.call()

と使うんだよ、と答えることになるでしょう。そこを

bar = proc(:foo)
bar()

と答えられたらかっこいいかなと思ったわけですよ。


> |(2)foo() で、メソッド foo が定義されていない時 foo.call()
> |を呼び出してしまうのはどうでしょう?
> 
> 構文的にはきれいですが,動作が複雑だなあ.どうしよう.

メソッドもオブジェクトだったら面白いかなと思ったりした事あるけど、
これだと「オブジェクトがメソッド」みたいで楽しいんじゃないかな。


> |(3)今見つけました。バグかも。
> |
> |foo = Proc.new { |*x| p x }
> |foo.call()
> |
> |bar = Proc.new { |x| p x }
> |bar.call()
> |
> |とすると nil, FALSE となりますが、これは [], [] が正しいのでは?
> 
> そうですねえ.今ソースを見るとわざわざそうしているんですね.
> なんでこうしているのかよく思い出せないのですが(アルツハイマー
> か?),おそらくは1引数の時の挙動をイテレータよりも関数に合わ
> せたかったのではないかと推測します.この手当をしないと
> bar.call(1)でxが[1]になってしまいますから.

あ、そうか。

> でも,foo.callは [] の方が嬉しいよなあ.これまたどうしよう.

そうですよね。

In This Thread