くまりゅう日記

もっと過去の日記
[.NET | BeOS | Blender | COLLADA | fossil | mono | monotone | NPR | OpenGL | PeerCastStation | Riko | Ruby | Silverlight | TRPG | XNA | ゲーム | ゲーム作り | プログラム | | 模型]

2004-01-29 ぎゃー。もう日がかわってる。

_ 最近

帰るの遅いと早く寝れないのね。

_ ブロック

WhitePaperを読むの忘れてた。

PSTのブロックには4つの種類があるらしい。

  • 最適化ブロック→ifTrue:とかのやつ。コンパイラが消す。
  • クリーンブロック→外を参照しないで自己完結するやつ。引き数はあっても良い。静的に作られる。
  • フルブロック→普通のブロック。動的に作られる。
  • バイブリッドブロック。外を参照するのに静的に作られるブロック。よくわからない。

普通にブロックを使うと最適化かフルになる。最適化ブロックは見たままだから良いとして、フルブロックはその時のスタックポインタなんかを所持している。 だから、そのコンテキスト外には持っていけない。

あまり無いクリーンブロックならどこにでも持っていけそうな気がする。 静的に作られるのでおそらくこれの参照を取るとクラスオブジェクトの参照になっているんだろう。 しかし、せめてselfぐらいは持ちたい気がする。

昨日は変数への参照持つ必要無いとか書いたが、良く考えると持つ必要あるよな。 というか、持つ必要がある場合がある。

というのはブロックの中でブロック外ローカル変数に何かを代入する時があるからである。 俺が書いてる分には少ないんだけど、そういうのを多用する人もいるかもしれん。

でもその場合は特殊化してしまうと良いのかもしれない。

ブロック外のローカル変数に代入だけがまずい。 ブロック内ローカル変数なら問題無いだろう。 インスタンス変数ならselfさえ保持しておけば大丈夫。 クラス変数にしても同じ。 グローバル変数も関係無い。 ブロック外ローカル変数でも参照するだけなら、コピーを持っておけば良い。

あともうひとつか。ブロック外ローカル変数に代入していても、その後そのローカル変数がブロック外で参照されない場合。が、これを判別するのは難しい気がするぞ。

本物Rubyではどうなってるんだろう…。 YARVとかも見てみよう。

_ Time of Judgment

Vampire: The MasqueradeのサプリVampire:Gehenaがもう出てたらしい。 ついでに小説のGehena - The Final Nightも。

Werewolfの方も最終サプリApocalypseが2月なのでもうじき。いっしょに小説Werewolf: The Last Battleも。

Mageは最終サプリAscensionと小説Mage: Judgment Dayが3月に。

あとはこれまた3月にその他の最終サプリWorld of Darkness: Time of Judgmentが出て終了らしい。WoDの小説は出ないのね。

うーん、一通り買ってみても良いかも…。 それぞれ小説かサプリのどちらかとWorld of Darkness: Time of Judgmentを買えばなんとなくは分かるだろう。

あー、小説だとちゃんと読まなきゃわからんかもしれんから、拾い読みでもなんとなくわかるサプリの方が良いかもなー。

Amazonで注文出来るだろうか…。 あ、あった。ポチっと。


ページのトップへ | トップ «前の日記(2004-01-27) 最新 次の日記(2004-02-01)» | 編集 | kumaryu.net by kumaryu