LlList2ListStrided
From Second Life Wiki
(Redirected from LSL llList2ListStrided)
| LSL Portal | | | Functions | | | Events | | | Types | | | Operators | | | Constants | | | Flow Control | | | Script Library | | | Tutorials |
Description
Function: list llList2ListStrided( list src, integer start, integer end, integer stride );| 198 | Function ID |
| 0.0 | Delay |
| 10.0 | Energy |
Returns a list of all the entries in the strided list whose index is a multiple of stride in the range start to end.
| • list | src | |||
| • integer | start | – | start index | |
| • integer | end | – | end index | |
| • integer | stride |
start & end support negative indexes.
Specification
| Index | Positive | Negative |
|---|---|---|
| First | 0 | -length |
| Last | length - 1 | -1 |
Mentally first translate any negative indexes into positive indexes
|
Positive indexes past the length (after the last index), or negative indexes past the beginning (before the first index) are valid. The effects are predictable, the entries are treated as if they were there but were removed just before output.
See negative indexes for more information.
Examples
list mylist = [0,1,2,3,4,5,6]; list result_a = llList2ListStrided(mylist,0,-1,2); //start at first item in list, go to the end, return every 2nd item //result_a == [0,2,4,6] list result_b = llList2ListStrided(mylist,1,-1,2); //start at second item in list, go to the end, return every 2nd item //result_b == [2,4,6] list result_c = llList2ListStrided(mylist,2,-1,2); //start at third item in list, go to the end, return every 2nd item //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 + ")"); } } }
Notes
To get every first element in a "collection of data" in a strided list:
list ListStridedFirstElement(list src, integer start, integer end, integer stride) { return llList2ListStrided(llList2List(src, start, end), 0, end, stride); }
To get every second element in a "collection of data" in a strided list:
llList2ListStrided(llDeleteSubList(src, 0, 0), 0, -1, 3);

