LSL汎用関数 訂正

れむ

2009年03月04日 01:26


ずっと直さないといけないと思いつつ放置していたことです。

ここの LSL の Tips には一部、非常に無駄なことが書いてあります。
こっそり直そうと思いましたが、ここで訂正致します。

誰からもツッコミが入らないし、
ここはそんなに見られているとは思いませんが。。

これらは組み込み関数にそのままの処理があります。

最大値を取得する
llListStatistics(LIST_STAT_MAX, lst);

最小値を取得する
llListStatistics(LIST_STAT_MIN, lst);

合計を求める
llListStatistics(LIST_STAT_SUM, lst);

平均を求める
llListStatistics(LIST_STAT_MEAN, lst);

標準偏差を求める
llListStatistics(LIST_STAT_STD_DEV, lst);


文字列置換はこの方が効率的です。

//==============================================================================
//  文字列を置換します。
//  source      対象の文字列
//  search      置換される文字列
//  replace     置換する文字列
//  戻り値      置換されたを返します。
//==============================================================================
string str_replace(string source, string search, string replace)
{
    return llDumpList2String(llParseStringKeepNulls(source, [ search ], []), replace);
}

こんな仕組みです。
list lst = llParseStringKeepNulls("abcabcabc", [ "b" ], []);     // [ a, ca, ca, c ]
string str = llDumpList2String(lst, "*");                        // "a*ca*ca*c"


あと、コピペされることを前提に i=~(-i)) のような最適化したコードを書いておきましたが、
MONOに変わってから色々と高速化されましたのであまり意味をなさなくなりました。

見にくいだけです。

ちなみに i=~(-i)) はインクリメントと等価です。
i = 0;
i = ~i;     // ビット反転 0xffffffff (-1)
i = -i;     // 符号反転   1

Tips