[#45298] グローバルにdefしたメソッドのスコープ — "takeru sasaki" <sasaki.takeru@...>
佐々木と申します。
10 messages
2008/08/06
[#45299] Re: グローバルにdefしたメソッドのスコープ
— rubikitch@...
2008/08/06
From: "takeru sasaki" <sasaki.takeru@gmail.com>
[#45318] Windows コマンドプロンプトで UTF-8を出力するには — Yuumi Yoshida <yuumi3@...>
おつかれさまです、 Yuumi3です。
11 messages
2008/08/08
[#45323] Re: Windows コマンドプロンプトで UTF-8を出力するには
— Yuumi Yoshida <yuumi3@...>
2008/08/08
こんばんは、Yuumi3です。
[#45324] tracer の出力が1.8,1.9では異なる。 — Kouya <kouyataifu4@...>
こんにちは、kouya です。
6 messages
2008/08/09
[#45334] def meth(*args, &block) の「*」「&」の呼び名は? — take_tk <ggb03124@...>
たけ(tk)です。
5 messages
2008/08/10
[#45345] 「サポートレベル」の定義、1.9.1のサポート予定プラットフォーム、メンテナ募集 — "Yugui (Yuki Sonoda)" <yugui@...>
Yuguiです。
4 messages
2008/08/13
[#45356] nil.size — "ARAI Shunichi" <arai@...>
こんにちは、Rubyist九州の新井です。
9 messages
2008/08/19
[#45365] cygwinでRabyが動作しない。 — Kura syuu <kurasyuu@...>
初めまして 蔵修と申します。
11 messages
2008/08/22
[#45379] Design Patterns in Ruby — あひる <ahirusan@...>
あひる@Ducksysです。はじめまして。
5 messages
2008/08/23
[#45387] OpenSSL::CipherでのDESのやり方 — "Hideo Yamamoto" <deoohi@...>
はじめまして、山本と申します。
6 messages
2008/08/25
[#45393] JRubyについて&rubygemについて&RDTについて — Akira Hayakawa <ruby@...>
夜分遅くすいません。Akiraと申します。
10 messages
2008/08/25
[#45396] Re: JRubyについて&rubygemについて&RDTについて
— rubikitch@...
2008/08/25
From: Akira Hayakawa <ruby@i-mail.jp>
[#45397] Re: JRubyについて&rubygemについて&RDTについて
— Akira Hayakawa <ruby@...>
2008/08/25
ありがとうございます。
[#45398] Re: JRubyについて&rubygemについて&RDTについて
— rubikitch@...
2008/08/25
From: Akira Hayakawa <ruby@i-mail.jp>
[#45399] Re: JRubyについて&rubygemについて&RDTについて
— Akira Hayakawa <ruby@...>
2008/08/25
On Tue, 26 Aug 2008 08:27:24 +0900
[#45400] Re: JRubyについて&rubygemについて&RDTについて
— rubikitch@...
2008/08/26
From: Akira Hayakawa <ruby@i-mail.jp>
[#45406] Ruby1.9のインストールに失敗しました — Akira Hayakawa <ruby@...>
環境はUbuntu Linuxです。
7 messages
2008/08/27
[#45414] This is TestMail (テストメール) — "masataka kobayashi" <hotopoppo1@...>
I'm sorry . This is Test Mail
5 messages
2008/08/28
[#45427] Dir[] with **/ — Nobuhiro IMAI <nov@...>
いまいです。
8 messages
2008/08/29
[#45438] assert_equalの挙動について — Akira Hayakawa <ruby@...>
こんばんわ。Akiraです。
7 messages
2008/08/30
[#45447] sudo: gem: command not found — Akira Hayakawa <ruby@...>
EclipseのRDTはバグが多すぎて、DLTKはまだ開発途中
7 messages
2008/08/31
[#45448] Re: sudo: gem: command not found
— rubikitch@...
2008/08/31
From: Akira Hayakawa <ruby@i-mail.jp>
[#45449] やっぱりrubygemの仕組みがいまいち分かりません — Akira Hayakawa <ruby@...>
初期条件として、
8 messages
2008/08/31
[#45451] Re: やっぱりrubygemの仕組みがいまいち分かりません
— rubikitch@...
2008/08/31
From: Akira Hayakawa <ruby@i-mail.jp>
[#45454] Re: やっぱりrubygemの仕組みがいまいち分かりません
— Akira Hayakawa <ruby@...>
2008/08/31
On Sun, 31 Aug 2008 13:16:54 +0900
[ruby-list:45309] Re: グローバルにdefしたメソッドのスコープ
From:
rubikitch@...
Date:
2008-08-06 19:29:07 UTC
List:
ruby-list #45309
From: take_tk <ggb03124@nifty.com>
Subject: [ruby-list:45308] Re: グローバルにdefしたメソッドのスコープ
Date: Thu, 7 Aug 2008 03:05:07 +0900
> これって気がつきにくいかも。中間クラスが別のファイルになっていたりすると、
> なんでこうなるのか分からないかもね。
そうですね。落とし穴だと思います。
僕も、一瞬グローバル関数が呼ばれるのだと思ってしまいました。
グローバル関数はObjectクラスに属していることを思い返せば納得ですが。
# これはいい試験問題になりそう。
> 結論としては、「トップレベルで作った関数のご利用は控えめに」ということか
> も。
いやぁ、僕はグローバル関数よく使います。
わざわざクラスを作るまでもない小さいスクリプトをよく書くので。
クラス定義しない「使うだけのオブジェクト指向プログラミング」も受け付けるのが
Rubyの好きなところのひとつです。
メソッド名の重複チェックはあおきさんのrdefs.rbや、rcodetools同梱の
rct-meth-argsでどうぞ。
rdefs.rbはソースコードを静的に解析し、定義部分を抜き出します。
rct-meth-argsはスクリプトを実際に実行して、Module#define_method等の
動的メソッド定義に対応しています。依存しているライブラリのメソッドをも
抜き出します。ただし、ちょっと遅いです(^^;
http://i.loveruby.net/svn/public/bin/trunk/rdefs.rb
http://eigenclass.org/hiki/rcodetools
$ rdefs.rb tmpdir.rb
class Dir
def Dir::tmpdir
def Dir.mktmpdir(prefix_suffix=nil, tmpdir=nil)
$ rct-meth-args tmpdir.rb
FileUtils#pwd (...)
FileUtils#cd (dir, options = {}, &block)
FileUtils#uptodate? (new, old_list, options = nil)
FileUtils#mkdir (list, options = {})
FileUtils#mkdir_p (list, options = {})
略
FileUtils::DryRun#makedirs (*args)
FileUtils::DryRun#copy (*args)
extend FileUtils::DryRun <- FileUtils::DryRun
Dir.tmpdir (...)
Dir.mktmpdir (prefix_suffix = nil, tmpdir = nil)
P.S.
ところで、僕の手元にファイル名や行番号も出力するなどの拡張を施した
rdefs.rbがあるのですが、再配布はokでしょうか?それとも、パッチを送りま
しょうか?
EmacsでRubyスクリプトを読むときに愛用しています。ファイル名や行番号も出
力すると、rdefs.rbの出力からソースコードの該当場所までジャンプしてくれます。
$ rdefs.rb -h
rdefs.rb [-nH] [-r REGEXP] file...
-n, --lineno Prints line number.
-H, --with-filename Prints filename.
-P, --with-prefix Prints prefix.
--help Prints this message and quit.
-r, --regexp=REGEXP Print lines matching REGEXP additionally.
-t, --tab-width=TAB-WIDTH Tab width.
$ rdefs.rb -nH tmpdir.rb
tmpdir.rb:9: class Dir
tmpdir.rb:32: def Dir::tmpdir
tmpdir.rb:92: def Dir.mktmpdir(prefix_suffix=nil, tmpdir=nil)
-Pをつけると、grepやanything.elで特定のクラスに属する定義のみを抜き出すことも。
$ rdefs.rb -nHP tmpdir.rb
tmpdir.rb:9: class Dir
tmpdir.rb:32: class Dir / def Dir::tmpdir
tmpdir.rb:92: class Dir / def Dir.mktmpdir(prefix_suffix=nil, tmpdir=nil)
--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/