1.8では,define_methodでブロックを受け取るメソッドは定義できない?
define_method(:foo) {|*args, &block| #何か処理 }
と書きたいんだけど,syntax errorになってしまう.define_methodではブロックを受け取るメソッドは定義できないのかなぁ.
define_method(:foo) {|*args| block = proc rescue nil #何か処理 }
これでできるかと思ったけど,define_methodを呼んでいるメソッドのコンテキスト(?)でprocするのでエラー.ブロック内でyieldできないのと同じか.
話変わるけど,:@aryのところでEmacsの色付けがおかしい(インスタンス変数と間違う).他にも,#@aとか#{}とか書いてあると,ダブルクォート内でなくても式展開と間違う(コメント文の色がおかしくなって困る).=beginって書くと一度文字列リテラルの色になる(=endを書いてから暫くするとコメントの色になる).インデントしてあるところで=begin〜=endを書くとインデントがおかしくなる(複数行コメントアウトとして使うのが間違い?).あと%記法に対応してない気がする.
Rubyの色付けや自動インデントは難しいと思うけど,色付けが間違ってる所はそんなに難しくない所が多い気がした.単に漏れてるだけなのかな?実際にはどうなんだろう.
とりあえず,俺には荷が重そうだ.誰かなんとかしてくれないかなぁ.
はてなの色付けの方が頑張ってる気がしたのでテスト.
#@foo "foo#{bar}foo#@baz foo#$baz" 'foo#{bar}foo#@baz foo#$baz' ["foo", "bar", "baz"] %w[foo bar baz]
頑張ってるなぁ.