[#45670] ruby-1.9.1-preview2のruby-tk on OSX — 天野竜太郎 <wn9r-amn@...>

天野です。

40 messages 2008/12/02
[#45673] Re: ruby-1.9.1-preview2のruby-tk on OSX — Nobuyoshi Nakada <nobu@...> 2008/12/03

なかだです。

[#45676] Re: ruby-1.9.1-preview2のruby-tk on OSX — 天野竜太郎 <wn9r-amn@...> 2008/12/03

天野です。

[#45678] Re: ruby-1.9.1-preview2のruby-tk on OSX — Nobuyoshi Nakada <nobu@...> 2008/12/03

なかだです。

[#45680] Re: ruby-1.9.1-preview2のruby-tk on OSX — Hidetoshi NAGAI <nagai@...> 2008/12/03

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

[#45701] Re: ruby-1.9.1-preview2のruby-tk on OSX — 天野竜太郎 <wn9r-amn@...> 2008/12/04

天野です。報告遅れてすみません。

[#45707] Re: ruby-1.9.1-preview2のruby-tk on OSX — Hidetoshi NAGAI <nagai@...> 2008/12/05

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

[#45708] Re: ruby-1.9.1-preview2のruby-tk on OSX — 天野竜太郎 <wn9r-amn@...> 2008/12/07

天野です。

[#45709] Re: ruby-1.9.1-preview2のruby-tk on OSX — Hidetoshi NAGAI <nagai@...> 2008/12/07

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

[#45710] Re: ruby-1.9.1-preview2のruby-tk on OSX — 天野竜太郎 <wn9r-amn@...> 2008/12/08

天野です。

[#45711] Re: ruby-1.9.1-preview2のruby-tk on OSX — Hidetoshi NAGAI <nagai@...> 2008/12/08

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

[#45712] Re: ruby-1.9.1-preview2のruby-tk on OSX — 天野竜太郎 <wn9r-amn@...> 2008/12/08

天野です。

[#45713] Re: ruby-1.9.1-preview2のruby-tk on OSX — Hidetoshi NAGAI <nagai@...> 2008/12/08

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

[#45714] Re: ruby-1.9.1-preview2のruby-tk on OSX — 天野竜太郎 <wn9r-amn@...> 2008/12/08

天野です。

[#45715] Re: ruby-1.9.1-preview2のruby-tk on OSX — Hidetoshi NAGAI <nagai@...> 2008/12/08

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

[#45716] Re: ruby-1.9.1-preview2のruby-tk on OSX — 天野竜太郎 <wn9r-amn@...> 2008/12/08

天野です。

[#45717] Re: ruby-1.9.1-preview2のruby-tk on OSX — Hidetoshi NAGAI <nagai@...> 2008/12/08

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

[#45721] Re: ruby-1.9.1-preview2のruby-tk on OSX — Hidetoshi NAGAI <nagai@...> 2008/12/17

天野さん,

[#45722] Re: ruby-1.9.1-preview2のruby-tk on OSX — 天野竜太郎 <wn9r-amn@...> 2008/12/17

天野です。

[#45725] Re: ruby-1.9.1-preview2のruby-tk on OSX — Hidetoshi NAGAI <nagai@...> 2008/12/17

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

[#45726] Re: ruby-1.9.1-preview2のruby-tk on OSX — Hidetoshi NAGAI <nagai@...> 2008/12/18

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

[#45727] Re: ruby-1.9.1-preview2のruby-tk on OSX — 天野竜太郎 <wn9r-amn@...> 2008/12/19

天野です。

[ruby-list:45695] Re: クラスメソッド

From: rubikitch@...
Date: 2008-12-04 13:33:44 UTC
List: ruby-list #45695
From: "Ayumu Aizawa" <ayumu.aizawa@gmail.com>
Subject: [ruby-list:45694] Re: クラスメソッド
Date: Thu, 4 Dec 2008 21:38:29 +0900

>     constantize(camel_cased_word)
> 
> というメソッドがActiveSupportによってObjectクラスに追加されているのはわかるんですけど
> このメソッドシグネチャ(あまりRubyでは馴染みがない響きの言葉ですが...)によると
> このメソッドはひとつの引数をとることになっています。

当たりです。
active_support/inflector.rbでは ActiveSupport::Inflector#constantize が
定義されていて、引数に CamelCase な文字列が来ます。
で、ActiveSupport::Inflectorでは extend self されているため、
ActiveSupport::Inflectorの特異メソッドとして呼ぶことができます。

require 'rubygems'
require 'active_support'

ActiveSupport::Inflector.constantize "FileTest" # => FileTest

> ところが実際に動かしてみると引数ではなくて、このメソッドのレシーバー(Stringクラスのインスタンス)
> が引数として渡されたかのような振る舞いをしています。

これは別で active_support/core_ext/string/inflections.rb に
ActiveSupport::CoreExtensions::String::Inflections#constantize が
定義されています。

(略)
        def constantize
          Inflector.constantize(self)
        end
(略)

で、 active_support/core_ext/string.rb では String に
ActiveSupport::CoreExtensions::String::Inflections を include しています。
だから文字列のメソッドとして使えるようになるのです。

"FileTest".constantize                          # => FileTest

ActiveSupportは細かく区分けしないといけないほどたくさんのメソッドが
追加されていますよね(^^;

--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/

In This Thread