こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Ruby 文法 ブロックの中で メソッドを呼ぶ

class Hoge
def val
'aaa'
end

def piyo
yield
end
end

h=Hoge.new
h.piyo do
p h.val #<ーここの話
end

上の様に書く時、ブロックの中で、そのクラスのメソッドを呼ぶ時、上の例だと
h.val
と書いてますが、これself.valなどと書きたいのですがERRになってしまいます。
h.と書くのがとても嫌なのですが、なにか良い書き方あるのでしょうか?

投稿日時 - 2014-02-21 21:38:39

QNo.8484921

困ってます

質問者が選んだベストアンサー

これはどうでしょうか?

class Hoge
def val
"aaa"
end

def piyo
yield(self)
end
end

h=Hoge.new
h.piyo do |this|
p this.val
end

投稿日時 - 2014-02-21 22:24:15

お礼

すばらしい!!

ご回答ありがとうございました。

投稿日時 - 2014-02-22 01:16:10

ANo.1

このQ&Aは役に立ちましたか?

11人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問