ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

初めてのRubyを読む その48 9.6

2011-11-14 21:41:52 | Ruby
「初めてのRuby」を読むの続き

今日は

9章 本書を越えて


9.6 Rubyの黒魔術

から




■9.6 Rubyの黒魔術
・Rubyには、俗に「黒魔術」と呼ばれる危険な領域が存在する
 →良く理解して使わないと、可読性を下げたり、セキュリティホールになる
 →それだけの代償を払っても魅力的な機能




■9.6.1 eval族
・eval族:組み込み関数eval
     Object#instace_eval
     Module#module_eval
     Class#class_eval

・文字列評価
 eval族を使えば、実行時に文字列をRubyコードとして解析・実行できる
 →外部からコードを入力して実行することすらできる

・コンテキストのすり替え
 eval族を用いれば、コードの評価コンテキストをするかえることもできる
  →本来ならインスタンスの中でしかアクセスできないはずのインスタンス
   変数も、外部からアクセスできる


・言語内DSL
 コンテキストのすり替えは、言語内DSLを構築するには欠かせない存在




■9.6.2 method_missing

・呼び出されたレシーバーが存在しないとき
  →Object#method_missingが呼ばれる
    →NoMethodError例外が発生する

・method_missingをオーバーライドすると、実際には、存在しないメソッドを
 存在するかの容易振舞わせることができる




■9.6.3 set_trace_func

・set_trace_func
  →ruby処理系にフックを仕掛けられる
・メソッドが呼ばれたり、戻ったり、クラスが定義されたり、インスタンス化
  →そのたびいコールバックルーチンが呼ばれる




■9.6.4 継続
・継続とは、プログラム実行中のある時点において、以降で使われるであろう
 計算、処理のこと

・Continuationオブジェクトとして操作できる



この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 障害の原因となる銀の弾丸は... | トップ | 11月14日(月)のつぶやき »
最新の画像もっと見る

Ruby」カテゴリの最新記事