LlList2ListStrided/ja
From Second Life Wiki
メインページ > LlList2ListStrided > LlList2ListStrided/ja
例
list mylist = [0,1,2,3,4,5,6]; // インデックスが 2 の倍数の要素を、リストの先頭から末尾の範囲で返す。 list result_a = llList2ListStrided(mylist,0,-1,2); //result_a == [0,2,4,6] // インデックスが 2 の倍数の要素を、リストの 2 番目から末尾の範囲で返す。 list result_b = llList2ListStrided(mylist,1,-1,2); //result_b == [2,4,6] // インデックスが 2 の倍数の要素を、リストの 3 番目から末尾の範囲で返す。 list result_c = llList2ListStrided(mylist,2,-1,2); //result_c == [2,4,6]
list menu = ["1", "one", "2", "two", "3", "three"]; default { state_entry() { llListen(10, "", llGetOwner(), ""); } touch_start(integer detected) { list buttons = llList2ListStrided(menu, 0, -1, 2); llDialog(llDetectedKey(0), "choose a number", buttons, 10); } listen(integer channel, string obj, key id, string message) { integer index = llListFindList(menu, [message]); if (index != -1) { llOwnerSay("you chose " + llList2String(menu, index + 1) + " (" + message + ")"); } } }
ノート
範囲とインデックス
インデックス範囲の説明を容易にするため、まず全てのインデックスを正 (プラス) に変換してください。負のインデックスは先頭でなく末尾から数えたもので、負のインデックスは全て対応する正のインデックスを (範囲に収まる限りは) 持ちます。末尾 (最後のインデックス) を過ぎた正のインデックス、先頭 (最初のインデックス) より前の負のインデックスは有効で、その結果は予測可能かつ信頼できます。すなわち、その要素はあたかも存在するかのように扱われますが、それは出力されるまでの間に限ります。
- start <= end の場合、範囲は start から end となります。 [start, end]
- start > end の場合、範囲は 0 から end、および start から -1 となります。 [0, end] + [start, -1]
- end が先頭より前の負のインデックスの場合、範囲は [start, -1] となります。
- end が末尾より後の正のインデックスの場合、範囲は [0, end] となります。
- start と end がいずれも有効な範囲から外れていた場合、関数は処理すべき範囲を持たないことになります。(事実上、関数の呼び出しは無駄になります。)
詳細は負のインデックスを参照してください。飛び石リストにおける "データ集合" の各先頭要素は以下のように取得できます:
list ListStridedFirstElement(list src, integer start, integer end, integer stride) { return llList2ListStrided(llList2List(src, start, end), 0, end, stride); }
飛び石リストにおける "データ集合" の各二番目の要素は以下のように取得できます:
llList2ListStrided(llDeleteSubList(src, 0, 0), 0, -1, 3);
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。

