LlList2ListSlice/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

関数: list llList2ListSlice( list src, integer start, integer end, integer stride, integer slice_index );

startからendまでの範囲内で、strideの倍数のインデックスを持つストライドリストの各ストライドにおけるslice_index番目の要素のリスト。を list で返します。

• list src
• integer start
• integer end
• integer stride
• integer slice_index

この関数は 飛び石リスト (ストライド リスト) を扱えます。 リスト内の最初のエントリのインデックスは0です。
スライス内の最初のエントリのインデックスは0です。
startend、またはslice_indexが負の場合、リストの末尾からインデックスが付けられます。-1はリストの最後の要素です。-list_lengthはリストの最初の要素です。
slice_indexが負の場合、リストの末尾からではなく、ストライドの末尾からカウントされます。例:-1はストライドの最後の要素です。
start > endの場合、startからendまでの範囲は除外範囲として扱われます。

サンプル

list mylist = [0,1,2,3,4,5,6];
list result_a = llList2ListSlice(mylist,0,-1,3,0); //start at first item in list, go to the end, return 1st slice of every stride of 3
//result_a == [0,3,6]

list result_b = llList2ListSlice(mylist,0,-1,3,1); //start at first item in list, go to the end, return 2nd slice of every stride of 3
//result_b == [1,4]

list result_c = llList2ListSlice(mylist,1,-1,3,1); //start at second item in list, go to the end, return 2nd slice of every stride of 3
//result_c == [2,5]

list result_d = llList2ListSlice(mylist,2,-1,3,-1); //start at first item in list, go to the end, return last slice of every stride of 3
//result_d == [2,5]

list result_e = llList2ListSlice(mylist,4,2,1,0); //4>2 so this is an exclusion. slice indices count from 0 and first element after exclusion. Return every element not in range with a stride of 1
//result_d == [0,1,5,6]
list menu = ["1", "one", "2", "two", "3", "three"];
default
{
    state_entry()
    {
        llListen(10, "", llGetOwner(), "");
    }
    touch_start(integer detected)
    {
        list buttons = llList2ListSlice(menu, 0, -1, 2, 0);
        llDialog(llDetectedKey(0), "choose a number", buttons, 10); //display the digits
    }
    listen(integer channel, string obj, key id, string message)
    {
        integer index = llListFindList(menu, [message]);
        if (index != -1)
        {
            list names = llList2ListSlice(menu, 0, -1, 2, 1);
            llOwnerSay("you chose " + llList2String(names, index ) + " (" + message + ")");
        }
    }
}

便利なスニペット

  • StrideOfList - startから始めてendを超える前に、stride-1アイテムをスキップします。ストライドの位置がリストの長さを下回る場合、ストライドのslice_index番目の要素が返されます。

注意点

リストがストライドで割り切れない場合、条件に一致する最終のスライスではリストの長さに達するまでの要素が返されます。例:ストライドが2の5つの要素からなるリストは、スライスインデックス0の範囲0,5では3つの要素を返しますが、スライスインデックスが1の場合は2つだけです。

特記事項

Search JIRA for related Issues

Signature

function list llList2ListSlice( list src, integer start, integer end, integer stride, integer slice_index );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。