list llListReplaceList(list dest, list src, integer start, integer end)
Returns a list replacing the slice of the list
dest from
start to
end with the list
src.
start and
end are inclusive, so
0, 1 would replace the first two entries and
0, 0 would replace only the first list entry.
Using negative numbers for
start and/or
end causes the index to count backwards from the length of the list, so
0, -1 would replace the entire list.
If
start is larger than
end, the list returned is the list between
start and
end followed by
src, so
6, 4 would return the 5th entry with
src after that.
Example of Slices:
// (Note that this is not real code.)
list foo = ["a", "b", "c", "d", "e", "f", "g"];
list bar = ["0", "1"];
list zot;
zot = llListReplaceList(foo, bar, 2, 5); // returns ["a", "b", "0", "1", "g"]
zot = llListReplaceList(foo, bar, 4, -1); // returns ["a", "b", "c", "d", "0", "1"]
zot = llListReplaceList(foo, bar, 4, 1); // returns ["c", "d", "0", "1"]
Note:
llListReplaceList does
not manipulate
dest directly. The list returned by this function is the modified version of the
dest. See the following example:
Functional Example:
default {
touch_start(integer total_number) {
list foo = ["a", "b", "c", "d", "e", "f", "g"];
list bar = ["0", "1"];
foo = llListReplaceList(foo, bar, 2, 5); // to really return ["a", "b", "0", "1", "g"]
llOwnerSay(llList2CSV(foo));
}
}
To replace a stride in the list:
list UpdateSubListStrided(list src, list stride, integer start, integer stride_len) {
return llListReplaceList(src, stride, start, start + stride_len - 1);
}
Question: Does the slice definied by start and end need to be the same length as src?
Answer: No, you can replace a slice with a longer or smaller src.
Question: I don't get it. It's not replacing my list.
Answer: No, llListReplaceList doesn't actually manipulate dest directly, rather it returns a new list containing the results. To manipulate a list directly, you need to do something like the functional example above. Alternatively, you can pass the result to a new list, and keep the original the same.
Compare with
llList2List,
llList2ListStrided,
llListInsertList,
llDeleteSubList,
llList2Float,
llList2Integer,
llList2Key,
llList2Rot,
llList2String and
llList2Vector.
Functions |
Lists