こんばんは、GW中もどんどんいろいろなセリフを喋るように次男がなってきました。kjunichiです。 背景 mrubyで画像変換処理を行うモジュールmruby-mrmagickを作り始めた。名前の通り、rmagickのAPIをmrubyで使えるように開発を進めている。そこで、今回の疑問にぶち当たった。Rmagickでは、処理の細かなオプションをブロックで指定するAPIになっており、 self.foo=bar の形式で指定することになっていた。yieldで楽勝と思いきや、selfがyieldだと、メソッドのインスタンス変数とはならず、ブロック作成時の例えば、main等で実行されてしまうことがわかった。 mrubyでselfを呼び出されたメソッドのインスタンスとして実行するには class Foo @width def mon(&blk) p self blk.call end def mon
![mrubyでselfを呼び出されたメソッドのインスタンスとして実行するには: misc](https://cdn-ak-scissors.b.st-hatena.com/image/square/6cd796891f0af4cb820a13e628a3344c3ba7d684/height=288;version=1;width=512/http%3A%2F%2Fkjunichi.cocolog-nifty.com%2Fimage.jpg)