Difference between revisions of "ListXnotY"
Jump to navigation
Jump to search
(You should initialize the variable when you declare it, as the compiler will implicitly initialize it. Implicit initialization isn't as readable as explicit, which is what examples should be: readable) |
m (<lsl> tag to <source>) |
||
(10 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
{{LSL Header}} __NOTOC__ | {{LSL Header}} __NOTOC__ | ||
[[Category:LSL_User-Defined Functions]] | |||
<div id="box"> | <div id="box"> | ||
== Function: [[list]] ListXnotY([[list]] {{LSL Param|lx}}, [[list]] {{LSL Param|ly}}); == | == Function: [[list]] ListXnotY([[list]] {{LSL Param|lx}}, [[list]] {{LSL Param|ly}}); == | ||
Line 7: | Line 8: | ||
See also: [[List|Lists]] | See also: [[List|Lists]] | ||
< | <source lang="lsl2"> | ||
list ListXnotY(list lx, list ly) {// return elements in X list that are not in Y list | list ListXnotY(list lx, list ly) {// return elements in X list that are not in Y list | ||
list lz | list lz; | ||
integer i | integer i = llGetListLength(lx); | ||
while(i--) | |||
if ( !~llListFindList(ly,llList2List(lx,i,i)) ) // * see Note | |||
lz += llList2List(lx,i,i); | |||
return lz; | return lz; | ||
} | } | ||
</ | </source> | ||
Note: If the if test is written as '''if (!~llListFindList''' ... , the result will be a list of elements in X that are ''missing'' from list Y. If it is written as '''if (~llListFindList''' ... , the result will be a list of elements in X that are ''present'' in list Y. | |||
Example:<br /> | Example:<br /> | ||
< | <source lang="lsl2"> | ||
list l1 = ["a","b","c","d"]; | list l1 = ["a","b","c","d"]; | ||
list l2 = ["a","1","b","2","c","3"]; | list l2 = ["a","1","b","2","c","3"]; | ||
list ListXnotY(list lx, list ly) {// return elements in X list that are not in Y list | |||
list lz; | |||
integer i = llGetListLength(lx); | |||
while(i--) | |||
if ( !~llListFindList(ly,llList2List(lx,i,i)) ) | |||
lz += llList2List(lx,i,i); | |||
return lz; | |||
} | |||
default{ | default{ | ||
Line 35: | Line 42: | ||
} | } | ||
} | } | ||
</ | </source> | ||
</div> | </div> | ||
Posted with the kind permission of Very Keynes, who originated this script June 2007 in the SL scripters forum http://forums.secondlife.com/ | Posted with the kind permission of Very Keynes, who originated this script June 2007 in the SL scripters forum http://forums-archive.secondlife.com/54/e4/194138/1.html | ||
{{LSLC|Examples|ListXnotY}} | {{LSLC|Examples|ListXnotY}} |
Latest revision as of 14:25, 22 January 2015
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Function: list ListXnotY(list lx, list ly);
Show what x list has that y list is missing.
See also: Lists
list ListXnotY(list lx, list ly) {// return elements in X list that are not in Y list
list lz;
integer i = llGetListLength(lx);
while(i--)
if ( !~llListFindList(ly,llList2List(lx,i,i)) ) // * see Note
lz += llList2List(lx,i,i);
return lz;
}
Note: If the if test is written as if (!~llListFindList ... , the result will be a list of elements in X that are missing from list Y. If it is written as if (~llListFindList ... , the result will be a list of elements in X that are present in list Y.
Example:
list l1 = ["a","b","c","d"];
list l2 = ["a","1","b","2","c","3"];
list ListXnotY(list lx, list ly) {// return elements in X list that are not in Y list
list lz;
integer i = llGetListLength(lx);
while(i--)
if ( !~llListFindList(ly,llList2List(lx,i,i)) )
lz += llList2List(lx,i,i);
return lz;
}
default{
state_entry() {
llSay(0, "X list has this in it, but Y list doesn't: " + llList2CSV(ListXnotY(l1,l2)) );
//will say: d
}
}
Posted with the kind permission of Very Keynes, who originated this script June 2007 in the SL scripters forum http://forums-archive.secondlife.com/54/e4/194138/1.html