<, >, <=, and >= are the operands to compare Numeric values. <=> is the operator to compare numbers. It returns the value of the Order type, which can be Order::Less, Order::More, or Order::Same.
Category: Raku
π String concatenation operator ~ in Perl 6
~ does the string concatenation. The dot in Perl 6 is now used for dealing with methods; thus, a new operator for the string concatenation was required. The tilde was a good candidate because it is also used in other string-related operators in Perl 6. say “a” ~ “b”; # ab If necessary, the operator … Continue reading “π String concatenation operator ~ in Perl 6”
π String comparison operators eq and ne in Perl 6
eq and ne compare strings for equality or non-equality, respectively.
π String comparison operator leg in Perl 6
leg tells if is the two strings are equal or the left operand is less or greater than the second one. Its behaviour is similar to what <=> does for numbers or what the cmp built-in operator does in Perl 5. Like the cmp in Perl 6, the leg operator returns a value of the … Continue reading “π String comparison operator leg in Perl 6”
π Universal comparison operators before and after in Perl 6
before and after are the comparison operators, which work with operands of different types. It returns a Boolean value of either True or False depending on which operand was considered to be ordered earlier or later. Type coercion is similar to how it happens with the cmp operator.Β Remember that depending on the data types … Continue reading “π Universal comparison operators before and after in Perl 6”
π Smartmatch operator ~~ in Perl 6
~~ is the smartmatch operator. It compares the objects and tries to work correctly with the operands of any type (that is why the operator is called smart). say 42 ~~ 42.0; # True say 42 ~~ “42”; # True The result of the smartmatching depends on the operand order. Consider the following: say “42.0” … Continue reading “π Smartmatch operator ~~ in Perl 6”
π Junction operators |, &, and ^ in Perl 6
|, &, and ^ create the so-called junctions (formerly known in Perl 6 as quantum superpositions). These objects can be used where a scalar is used but behave differently; unlike the scalars, the junctions have multiple values at the same moment in time. The |, &, and ^ operators create, respectively, the junctions of the … Continue reading “π Junction operators |, &, and ^ in Perl 6”
π Invocant call operator : in Perl 6
: marks the left side of it as an invocant to call a method on, when a method of an object is used. It is easier to understand how it works in the following example. class C { Β Β Β method meth($x) { Β Β Β Β Β Β Β say “meth($x)”; Β Β Β } } my $o = C.new; meth($o: 42); # … Continue reading “π Invocant call operator : in Perl 6”
π Default values in Perl 6 subs
Perl 6 also allows specifying the default values of the subβs arguments. Syntactically, this looks like an assignment. sub i-live-in(Str $city = “Moscow”) {Β Β Β Β Β say “I live in $city.”;Β Β Β Β Β Β Β Β Β Β Β Β } i-live-in(‘Saint Petersburg’); i-live-in(); # The default city It is also possible to pass values that are not known at the compile phase. When the … Continue reading “π Default values in Perl 6 subs”
π Universal comparison operator cmp in Perl 6
There are a few operators, which can compare both strings and numbers, or even compound objects like pairs. cmp compares two objects and returns a value of the Order type, either Less, or Same, or More. say 2 cmp 2;Β Β # Same say 2 cmp 2.0; # Same say 1 cmp 2;Β Β # Less say … Continue reading “π Universal comparison operator cmp in Perl 6”
π Universal comparison operator eqv in Perl 6
eqv is an operator that tests the two operands for equivalence. It returns the True value if the operands are of the same type and contain the same values. my $x = 3; my $y = 3; say $x eqv $y; # True An example with a bit more complex data structures: my @a = … Continue reading “π Universal comparison operator eqv in Perl 6”
π Universal comparison operator =:= in Perl 6
=:= is the operator to check if the operands refer to the same object. A Boolean value is returned. The operator is called the container identity operator. my $x = 42; my $y := $x;Β say $x =:= $y; # True say $y =:= $x; # True
π List repetition operator xx in Perl 6
xx repeats the list the given number of times. say (1, -1) xx 2; # ((1 -1) (1 -1)) Like the string x operator, the xx operator returns an empty list if the number of repetitions is zero or negative.
π Cross-product operator X in Perl 6
X is the cross product operator, which converts the two given lists to a third one containing all the possible combinations of the elements from the original lists. @c = @a X @b; This is the same as the following sequence: @c = ((@a[0], @b[0]), (@a[0], @b[1]), (@a[0], @b[2]), … (@a[N], @b[0]), (@a[N], @b[1]), … … Continue reading “π Cross-product operator X in Perl 6”
π Sequence operator … in Perl 6
… creates a sequence and is called a sequence operator. my @list = 1 … 10; The operator can also count backwards: my @back = 10 … 1;
π Shortcut operator || in Perl 6
|| returns the first operand, which is True in a Boolean context. The remaining operands are not evaluated. say 10 || 0; # 10 say 0 || 10; # 10
π Shortcut operator // in Perl 6
// returns the first defined operand. The operator is called a defined-or operator. It is also is a shortcut operator. my $x; my $y = 42; my $z; say $x // $y // $z; # 42
π Pair creation operator => in Perl 6
=> creates an object of the Pair type. The Pair is a βkey; valueβ combination, like those used in hashes. In the code, it is not always necessary to quote the key values. my $pair = alpha => “one”;Β my %data = jan => 31, feb => 28, mar => 31;
π Negation meta-operator ! in Perl 6
The negating exclamation mark ! is used to create the next set of meta-operators. If it is prepended to the existing operator op, you get the operator that gives you the negated result !op. say “no” if “abcd” !~~ “e”;
π Subroutines, or subs in Perl 6
For a sub, which takes no arguments, its definition and the call are very straightforward and easy. sub call-me { Β Β Β say “I’m called” } call-me; The syntax for declaring a subβs parameters is similar to what other languages (including Perl 5.20 and higher) provide. sub cube($x) { Β Β Β return $x ** 3; } say … Continue reading “π Subroutines, or subs in Perl 6”