まつもと ゆきひろです

In message "Re: [ruby-dev:37347] Re: [Feature #841] Object#self"
    on Wed, 10 Dec 2008 21:06:23 +0900, rubikitch / ruby-lang.org writes:

|> どういう風に使うんですか?

|# 自分自身を返すメソッドをaliasで作成する
|class Test
|  alias foo self
|end
|Test.new.foo                  # => #<Test:0x91aa1b8>
|
|# ブロック {|x| x } を &:self と記述する
|require 'scanf'
|"abcd".scanf('%c%c')          # => ["a", "b"]
|"abcd".scanf('%c%c'){|a| a}   # => [["a", "b"], ["c", "d"]]
|"abcd".scanf('%c%c', &:self)  # => [["a", "b"], ["c", "d"]]

前者はまったく必要性が理解できません。後者はselfという名前は
ふさわしくないと思います。さらに言えばわかりやすさが増してな
い(っていうかむしろ意図がわかりにくい)割にバイト数すら減って
ないし。