LSL:デバッグ時のおもしろい出力方法を見つけました^^

jinko

2007年12月05日 19:52


なんかハタキが作りたくなって、またスクリプトと格闘していました^^



ちょっと行き詰ったので、ちゃぶ台のときに参考にしたフランスのサイトをパラパラ眺めていると面白いものを見つけました。


Debug tranquille

読めないけど・・・なんかかっこいいねーフランス語。

LSLのデバッグのときの出力のTIPSです。

スクリプトをデバッグしていると途中の変数がどうなっているか確認するために

llOwnerSay("a=" + (string) a + " b=" + (string) b + " c=" + (string) c);

というデバッグのための出力を書くと思いますが、筆者のForest さんの提案は、

llOwnerSay(llList2CSV(["a", a, "b", b, "c", c]));


こう書いてみたらどうかというものです。

なるほど!キャストがいらないのねー

出力例はこんな感じ。

a=, 10, b=, 00000000-0000-0000-0000-000000000000, c=,

llList2CSV()を使ってリストの要素の区切りをカンマに置き換えています。
デバッグなので意味がわかればいいんですよねー


面白いので、別の書き方を考えて見ました。

llOwnerSay((string)(["a=",a," b=",b," c=",c]));

今度はキャストを使うのですが、リストを使って一度にString型に変換します。
b=とか、c=とかの前にスペースが微妙に入っていますので出力は以下のようになります。

a=10 b=00000000-0000-0000-0000-000000000000 c=


テストに使ったソースはこんな感じです。
出力する変数はリスト以外の型が使えます。(リストの中にリストを入れれないので)


integer a=10;
key b= NULL_KEY;
vector c=;

default{
    
    state_entry(){
        llOwnerSay("a=" + (string) a + " b=" + (string) b + " c=" + (string) c);
    }

    touch_start(integer total_number){
        llOwnerSay((string)(["a=",a," b=",b," c=",c]));
        llOwnerSay(llList2CSV(["a=",a,"b=",b,"c=",c]));
    }
}



リストって使いにくくて腹立つことも多いんですが、ときどき面白いですね^^

(おまけ)

早速ハタキでお店を掃除中♪



ほこり出しすぎ~^^
Tips