前言
本文說明 Raku 的資料型態。
說明
以下是一些常見的 Raku 資料型態:
Nil:沒有值Bool:布林數- 數字
Int:任意精確度整數UInt:任意精確度無號整數Rat:有理數FatRat:任意精確度有理數Num:倍精確度浮點數 (相當於 C 語言的double)Complex:複數
Str:字串- 日期
Date:日期DateTime:包含時間的日期
Sub:副常式 (函數)
由於 Raku 資料型態有複雜的繼承關係,直接看 Raku 官網容易看不懂,先記得幾個常用的資料型態即可。
布林 (Boolean)
布林 (boolean) 只有 True 和 False 兩種值,主要用於條件判斷中。
數字 (Number)
整數
Raku 的整數形態是大數,只要記憶體足夠,可以表現任意精確度。
整數表示法
Raku 常用的整數表示方式如下:
- 十進位:
12345,最常見的表示法 - 十六進位:
:16<FF> - 八進位:
:8<755> - 二進位:
:2<10101>
甚至可以用其他介於 2 至 36 間的位數:
- 五進位:
:5<342> - 三十進位:
:30<102squr>
數字可以用底線分隔,視覺上較美觀,如 123_456_789。
有理數
Raku 的數字系統和一般程式語言略為不同。以下的程式會引發錯誤:
$ ruby -e 'raise "Unequal" unless 0.1 + 0.2 - 0.3 == 0.0'
但以下的 Raku 程式可正確執行:
$ raku -e '0.1 + 0.2 - 0.3 == 0.0 or die "Unequal";'
這是因為 Raku 內部使用 Rat 儲存有理數,不會有浮點數造成的微小誤差。
這項特性幾乎不會出現在其他程式語言,最好把該特性當成特例,不要過度依賴。
自然型態
為了和 C 語言橋接,Raku 也有直接對應硬體的自然型態。這時候的數字是固定寬度。
字串 (String)
在 Raku 中,用以下方式可以撰寫字串實字:
- 一對單引號
- 一對雙引號
q加上成對符號,相當於一對單引號qq加上成對符號,相當於一對雙引號
以下是實例:
q<Hello World> eq "Hello World" or die "It should be equal";
在這個例子中,我們使用兩種方式來撰寫相同的字串實字,故其值相等。
物件 (Object)
除了使用現有的型能外,可以透過物件導向增加新的型態。
Perl 一開始不支援物件導向,Perl 5 的物件系統是後來才附加上去的,相對較為原始。Perl 社群參考 Raku 的物件系統,引入 Moose 後,Perl 5 才有比較進步的物件系統。
相對來說,Raku 支援原生的物件導向語法,和 Moose 的語法差不多。