跳轉到內容

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 程式設計
華夏公益教科書