From: Yasushi Ando Date: 2011-01-05T12:01:25+09:00 Subject: [ruby-dev:42942] Re: Proc#callの別名の提案 あんどうと申します。 以前考えたんですが、メソッドが見つからなくて代わりに同名の変数があるときにはその変数のcallメソッドを呼ぶというのは駄目でしょうか?もちろん非互換も甚だしいのですぐにということではなく将来的にRuby2.0辺りで、ということなんですが・・・。 ちなみにRubiniusでは次のようにして無理やりそれっぽいものを実現できました。 | class Object | alias method_missing_without_call method_missing | def method_missing(name, *args, &block) | binding_of_sender = Binding.setup(Rubinius::VariableScope.of_sender, | Rubinius::CompiledMethod.of_sender, Rubinius::StaticScope.of_sender) | obj = eval(name.to_s, binding_of_sender) | if self == eval('self', binding_of_sender) and obj and obj.respond_to?('call') | obj.call(*args, &block) | else | method_missing_without_call(name, *args, &block) | end | end | end | | fun = lambda {print 'Hello, '} | fun2 = lambda {|msg| print msg} | | fun() | fun2 'world!' | #=> Hello, world! 2011/1/5 Shota Fukumori (sora_h) : > sora_hです。 > > 2011/1/5 : >> Procオブジェクトのことです。私自身が関数型言語とオブジェクト指向言語の融合に興味があったので >> そういう言葉をつくってしまいました。 > なるほど。 > >> これは知りませんでした。コードまで示していただきましてありがとうございます。 > いえいえ。 > >> いま自分で言語の設計の(まねごとですが)しているのですが、今となってはProc#[]でも悪くないと思えるようになりました。 >> ただ、Rubyの括弧なしの呼び出しがとてもすばらしいと思うので、欲がでて提案してしまいました。 > 卜部さんやまつもとさんがおっしゃられているように、提案することは良いかと思います。 > 悪いことではないと思うので。 > > -- > Shota Fukumori a.k.a. @sora_h - http://codnote.net/ > > -- ANDO Yasushi - andyjpn@gmail.com - http://d.hatena.ne.jp/technohippy/ - http://twitter.com/technohippy