411 REFERENCE · Wikibooks
Plezuro/lists
Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.
One of important types of Plezuro is the list. It is an equivalent of .NET List<object> and Java ArrayList<Object>. To create a list, just use square brackets ('[', ']').
In intermediate code it is translated to '::array()'. Elements of a list can be of any type (including list), they are passed by reference, so it is possible that a list contains itself.
$x = [1,2,3,'something',[3,4]];
'x'.dumpl;
x.each({
args.printl
});
x.each({
this.printl
});
As you just have seen above, you can print elements of a list in many ways. The simplest way is to use the dumpl function (it is appropriate to any type in Plezuro). Another one is to use the each method. 'args' means all the arguments passed to a function (in this case a tuple (value, index)) and 'this' means the argument #0 (in this case only value).
Now, I guess, you wonder to get access to a specified element of a list (get and set its value). It is pretty simple, like in other languages, use square brackets.
$list = [3,9,4];
'list'.dumpl;
list[0].printl;
list[1] = 'abc';
'list'.dumpl;
});
Lists, like any other variables, are passed by reference.
$a = [0,0,1];
$b = a;
b[0] = 90;
a
Now, how to sort a list?
$x = [4,5,2,90,452,1,-34,20];
x.sort.printl; //sorting just by value
x.orderBy{args%10}.printl; //sorting by last digit (for negative numbers we assume the last digit is negative)
Now, a little more about the indexing. You can access to a piece of a list in a similar way like in Ruby (using '..' operator). For example a[1..4]. The difference is, in this case in Ruby, it returns elements from index 1 up to index 4, but in Plezuro, it returns elements from index 1 up to index 3. Another interesting feature is when using commas, you can access to disjoint pieces of a list (for example first and fourth element). Indexing may return an empty object, a single variable, or a tuple. Of course, you can modify any piece of a list.