定数だって関数2

参考:[id:omochist:20070214:1171436905]
すげー思いつきというか勢いだけで書いただけに,コメントがくるとは思わなかった.というか,スパムコメントのせいで見逃すところだった…….そろそろフィルタを作って欲しいところ.

id:secondlifeさん

secondlife 『トップレベルの main オブジェクトに対しメソッド Foo を定義してるので、
self.Foo ではないでしょうか>括弧なしで呼ぶことはできない』 (2007/02/15 00:55)

たしかにできましたね!認識が甘かったです.

>> def Foo
1>   puts "foo"
1>   end
>> self.Foo
foo
>> 

関数の呼び出し規則だとか,その辺を勉強する必要があるなぁ.勉強しなきゃ勉強しなきゃと思って,未だに本を読めてない.RubyWayとか読みたいんだけどマジ.

IKejiさん

IKeJI 『ご指摘ありがとうございます。
プラグイン名はキャメルケースをやめてruby標準型にします。』 (2007/02/15 01:20)

どうでしょうか,別に良いとは思うんですけどねぇ.宣言されたクラスの中にちゃんと関数を作ってる以上,明示的にインスタンスから呼び出さざるを得ないんだし,格好無しでも普通に呼べるわけだから.その辺りの方針はIKeJIさんに任せるしか無いのだけれど.

id:walf443さん

walf443 『Object.constants.grep(/Hoge/)
#=> []
Object.methods.grep(/Hoge/)
#=> [”Hoge”]

となるように単に大文字で始まるメソッド名をRubyでは定義することができるというだけで,ここでの例はRubyの文法の定数とはまったく違うと思います。cf.) Kernel.URI(), Kernel.Pathname()

Rubyで定数と言った場合は再代入できない変数,あるいはクラス名,モジュール名がなどを指します。

ちなみにRubyは変数には種類によって色々と名前制限がありますが,メソッドはdefine_methodを使ったりすると文字列ならどんな名前でも大丈夫だったりします。(Object#__send__を使わないと呼び出せませんが』 (2007/02/15 07:05)

へー!なるほど!大文字で始まるから定数,という考えに安直に走っちゃダメなんですね.ボクは言語仕様すら把握できてないようです.


ところで,Ruby勉強会@関西14に参加申し込みをしました.懇親会は,お金と元気がちょっと足りないので,今のところ参加しない予定.id:hakobe932は未踏のことで色々先人に相談することもありそうだけど.
Plagger meets Rubyってセッションがとりあえず楽しみでたまりません.


なんというか,春休みに入ってすげー気力が無いわ.暇さえあればジブリとか見てるせいだろうか.今日も魔女宅見て「俺の青春って(ry」なんて考えてしまったよ!怖いよ!