[#42851] Object#define_singleton_method がない?? — take_tk <ggb03124@...>

たけ(tk)です

14 messages 2006/10/06
[#42852] Re: Object#define_singleton_method がない?? — Yukihiro Matsumoto <matz@...> 2006/10/06

まつもと ゆきひろです

[#42853] Re: Object#define_singleton_method がない?? — take_tk <ggb03124@...> 2006/10/06

たけ(tk)です。

[#42870] system の実行タイミングのトラブル — "Hideo Konami" <konami@...>

小波です。

18 messages 2006/10/14
[#42874] Re: system の実行タイミングのトラブル — "Hideo Konami" <konami@...> 2006/10/14

小波です。

[#42876] Re: system の実行タイミングのトラブル — cuzic <cuzic@...> 2006/10/14

cuzic です。

[#42885] apt-listbugs: soap4r での悩み — Junichi Uekawa <dancer@...>

ruby-list のみなさま、

21 messages 2006/10/16
[#42891] Re: apt-listbugs: soap4r での悩み — "NAKAMURA, Hiroshi" <nakahiro@...> 2006/10/17

-----BEGIN PGP SIGNED MESSAGE-----

[#42892] Re: apt-listbugs: soap4r での悩み — Junichi Uekawa <dancer@...> 2006/10/17

こんにちは、

[#42896] Re: apt-listbugs: soap4r での悩み — "NAKAMURA, Hiroshi" <nakahiro@...> 2006/10/17

-----BEGIN PGP SIGNED MESSAGE-----

[#42929] Re: 括弧なしsuperで引数が引き継がれない — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

17 messages 2006/10/31
[#42930] Re: 括弧なしsuperで引数が引き継がれない — "U.Nakamura" <usa@...> 2006/10/31

こんにちは、なかむら(う)です。

[#42931] instant rails インストール! irbを起動するには? — "Uema Tsuyoshi" <mugenkai15@...> 2006/10/31

上間といいます。

[#42933] Re: instant rails インストール! irbを起動するには? — "きむらこういち" <hogemuta@...> 2006/10/31

木村です。

[#42937] Re: instant rails インストール! irbを起動するには? — "Uema Tsuyoshi" <mugenkai15@...> 2006/10/31

上間です。

[ruby-list:42867] Re: Object#define_singleton_method がない??

From: "Hiroshi Ichikawa" <gimite@...>
Date: 2006-10-08 01:57:28 UTC
List: ruby-list #42867
Gimiteといいます。

僕も勝手にdefine_singleton_methodを定義して使ってます。

> > 効率的かという話で言えば、singleton class statementを使った
> > 方が効率的じゃないんでしょうかね。毎回、singletonと書かなく
> > てすむわけですし。
>
> そういう書く効率という意味では
>   class << self; self; end
> を
>   obj.singleton_class
> で得たいです。

確かに。外側のローカル変数をsingleton_methodの中で使いたい場合(*1)
(大抵はそうだと思いますが…)は
 class <<obj
   define_method(:foo){...}
 end
とは書けず、
 sclass= class << obj; self; end
 sclass.__send__(:define_method, :foo){...}
と書くことになると思いますが、これよりは
 obj.singleton_class.__send__(:define_method, :foo){...}
または
 obj.define_singleton_method(:foo){...}
の方が簡潔ですね。

#個人的には、 class << obj; self; end がかなりトリッキーに
#見えるので多用したくないというのが大きいかも。

*1: lib/soap/baseData.rb の例:
    def add_accessor(name)
      …
      Mapping.define_singleton_method(self, methodname) do
        @data[@array.index(name)]
      end
      …
    end
以下のようには書けない:
    def add_accessor(name)
      …
      class << self
        define_method(methodname) do
          @data[@array.index(name)]
        end
      end
      …
    end

In This Thread

Prev Next