ローカルスコープ変数を作る MovableType プラグイン:LocalBlock

Posted by
ぴろり
Posted at
2008/02/24 12:15
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
プラグイン カテゴリ

 MovableTypeの変数タグでフィボナッチ数を求めようとした場合(?),の変数はグローバル変数としてしか扱えないという仕様がを煩雑にしています。
 そこで,の変数についてローカル変数を任意に定義できるようなを書いてみました。ローカル変数によっての変数を局所化し,相互依存性や複雑性を軽減できると期待できます。

この記事をはてなブックマークに追加する この記事のはてなブックマーク数 | この記事をlivedoorクリップに追加する この記事のlivedoorクリップ数 | この記事をYahooブックマークに追加する この記事のYahoo!ブックマーク数 | この記事をdel.icio.usに追加する

 を導入すると,ブロック内の変数を局所化する<MTLocalBlock>というブロックタグが使用できるようになります。<MTLocalBlock>ブロック内で定義された変数や,既存の変数に加えられた変更は,ブロックの外に戻ると無かったことになります。

ローカル変数版フィボナッチ数列

 グローバル変数とテンプレートタグでフィボナッチ数を求める時に使ったテンプレート<MTLocalBlock>を用いて書き直すと以下のようになります。フィボナッチ数を再帰で求める部分で fib_x 変数の周辺がよりスマートに書けるようになりました。また,使用されているタグの総数が減ったことでパフォーマンスの向上も期待できます。

そもそもタグでフィボナッチ数列を計算する意味が(ry

LocalBlock

最新版のやバグレポートはLocalBlock の trac レポジトリでも行っています。

タグ リファレンス

MTLocalBlock
 ブロック内の全ての変数を局所化します。MTLocalBlockが使用された段階で定義されている全ての変数はブロック内に引き継がれますが,ブロック内で変数に対して行われた変更はブロック外の変数には影響を与えません。ブロック内で新しく定義された変数は,ブロック外では未定義となって参照することはできません。ブロック内の変数をブロック外で参照するには後述のglobalsオプションを使用してください。
globals
 ここで指定された正規表現にマッチする名前を持つ変数はグローバル変数として,ブロック内での変更はブロック外でも参照することができます。
  • globals="^foo$" … 変数 foo はグローバルです
  • globals="^g_.+$" … g_ で始まる変数は全てグローバルです

この記事を読んだ人はこんな記事も読んでいます 記事リコメンデーションについて

その他の関連する記事


関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (匿名可/必須/公開)
 (匿名可/必須/非公開)
 (必須)
コメントスパム防止のため投稿前に ランダムな数字 CAPTCHAについて を入力してから投稿してください。お手数ですがご協力のほど宜しくお願いいたします。