位元詩人 [Raku] 程式設計教學:資料型態 (Data Type)

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

前言

本文說明 Raku 的資料型態。

說明

以下是一些常見的 Raku 資料型態:

  • Nil:沒有值
  • Bool:布林數
  • 數字
    • Int:任意精確度整數
    • UInt:任意精確度無號整數
    • Rat:有理數
    • FatRat:任意精確度有理數
    • Num:倍精確度浮點數 (相當於 C 語言的 double)
    • Complex:複數
  • Str:字串
  • 日期
    • Date:日期
    • DateTime:包含時間的日期
  • Sub:副常式 (函數)

由於 Raku 資料型態有複雜的繼承關係,直接看 Raku 官網容易看不懂,先記得幾個常用的資料型態即可。

布林 (Boolean)

布林 (boolean) 只有 TrueFalse 兩種值,主要用於條件判斷中。

數字 (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 的語法差不多。

關於作者

位元詩人 (ByteBard) 是資訊領域碩士,喜歡用開源技術來解決各式各樣的問題。這類技術跨平台、重用性高、技術生命長。

除了開源技術以外,位元詩人喜歡日本料理和黑咖啡,會一些日文,有時會自助旅行。