跳转到内容

Raku 编程/基本操作

来自维基教科书,开放书籍,开放世界

运算符

[编辑 | 编辑源代码]

在过去的几章中,我们一直在研究 Raku 数据以及保存这些数据的变量。现在我们将探索在获得数据后可以对数据执行哪些操作。Perl 有一系列常规的算术运算符,可以应用于整数和浮点数,甚至还有一些适用于其他数据类型的运算符。一旦我们了解了所有常规的运算符,我们就可以开始研究元运算符,它们采用相同的概念并将其应用于不同的上下文。

运算符在其操作数上工作 - 正在执行操作的数量。要理解任何运算符,您必须了解其元数(它采用多少个操作数)。如果它采用一个操作数,则称为一元运算符;如果它采用两个操作数,则称为二元运算符;如果它采用三个操作数,则称为三元运算符。

算术一元运算符

[编辑 | 编辑源代码]

最简单的算术运算符是一元符号运算符 +-。这些应用于数值值的前部以影响该数字的符号

my Int $x = 5;
$y = -$x         # Now, $y is -5

还有一个前缀 + 运算符,它不会反转符号。

算术二元运算符

[编辑 | 编辑源代码]

Raku 具有许多算术运算符,与其他编程语言类似。

my $x = 12;
my $y = 3;
my $z;
$z = $x + $y;    # $z is 15
$z = $x - $y;    # $z is 9
$z = $y - $x;    # $z is -9
$z = $x * $y;    # $z is 36
$z = $x / $y;    # $z is 4
$z = $x % $y;    # $z is 0 (remainder)

算术运算符需要数字参数,因此参数将自动转换为数字,就像我们使用上下文转换器 +( ) 一样。

my Str $x = "123";
my Str $y = "456";
my Int $z = $x + $y;          # 579
my Int $w = +($x) + +($y);    # Same, but more verbose

字符串和 ~

[编辑 | 编辑源代码]

在 Raku 中,符号 ~ 始终与字符串相关联。当用作前缀时,它将它所使用的任何变量都转换为字符串(如果之前不是字符串)。当它用作两个字符串之间的运算符时,它会将字符串首尾相连,这个过程称为连接

字符串化

[编辑 | 编辑源代码]

我们已经讨论过使用 ~( ) 作为字符串上下文说明符。这被称为字符串化。字符串化将变量从其他类型转换为字符串表示。

两个字符串可以连接在一起以生成一个新的字符串

my Str $x = "hello " ~ "world!";

~ 运算符会自动将任何不是字符串的参数转换为字符串。所以我们可以这样写

my Int $foo = 5;
my Str $bar = "I have " ~ $foo ~ " chapters to write";
print $bar;

这将打印出字符串:我还有 5 章要写

在大多数情况下,使用插值可能更容易,我们将在接下来讨论。

我们之前简要介绍过,字符串有三种基本类型:双引号字符串、单引号字符串和 heredocs。单引号字符串和双引号字符串看起来可能很相似,但它们的行为却不同。区别在于插值

双引号字符串是可插值的。出现在字符串内的变量名将被转换为其字符串值并包含在字符串中。单引号字符串没有此行为

my Int $x = 5;
my Str $foo = "The value is $x";               # The value is 5
my Str $bar = 'The value is $x';               # The value is $x

递增和递减

[编辑 | 编辑源代码]

变量增加或减少一的运算非常常见,因此需要专门的运算符。++-- 运算符可以用作标量变量的前缀或后缀。这两个不同的位置存在细微的差异。

my Int $x = 5;
$x++;            # 6 (increment is done after)
++$x;            # 7 (increment is done before)
$x--;            # 6 (as above) 
--$x;            # 5 (as above)

两种形式,前缀形式和后缀形式,在上面的示例代码中似乎通常执行相同的操作。代码 ++$x$x++ 都执行相同的操作,但操作发生的时间不同。让我们用一些例子来演示这一点

my Int $x = 5;
my Int $y;
$y = $x++;            # $y is 5, $x is 6
$y = ++$x;            # $y is 7, $x is 7
$y = $x--;            # $y is 7, $x is 6
$y = --$x;            # $y is 5, $x is 5

前缀版本在变量在语句中使用之前执行递增或递减。后缀版本在变量使用后执行递增或递减。

下一页: 控制结构 | 上一页: 类型和上下文
主页: Raku 编程
华夏公益教科书