前言
本文介紹 Raku 的核心基本概念,為你奠定撰寫 Raku 程式必備的基礎知識。
檔案規範
副檔名
Raku 檔案依據用途使用不同的副檔名:
- 主程式:
.raku - 模組:
.rakumod - 文件:
.rakudoc - 測試程式:
.rakutest
💡 歷史背景:由於 Raku 早期被稱為 Perl 6,因此曾沿用 Perl 的副檔名。目前官方已不再建議繼續使用舊版副檔名。
檔案名稱
Raku 對於檔案名稱沒有特殊限制,只要符合作業系統的命名規範即可。
建議命名習慣:
- 避免在檔名中使用空白字元,以免造成開發或指令執行的困擾。
- 通常建議使用小寫英文字母並以
-(破折號)分隔單字。
編碼規範
Raku 原始碼預設採用 UTF-8 編碼。這種現代化的設計趨勢也同樣見於 Go (Golang) 或 Rust 等當代程式語言中。
⚠️ 注意事項:雖然 Raku 支援豐富的 Unicode 字元,但部分 UTF-8 特殊字元難以透過鍵盤直接輸入。為了提高程式碼的可讀性與維護性,開發時應盡量避免使用這些不易輸入的特殊字元。
Hello World 入門
撰寫程式腳本 (Script)
請建立一個名為 hello.raku 的文字檔案,並寫入以下程式碼:
say "Hello World";
接著在終端機執行此腳本:
$ raku hello.raku
Hello World
當程式邏輯較長或較複雜時,將其寫成腳本檔案最便於日後重複利用。
從命令列直接執行
如果是非常簡短的程式,你也可以不需要建立檔案,直接在終端機中執行:
$ raku -e 'say "Hello World";'
Hello World
這種單行的程式寫法被稱為 One-liner,在 Unix/Linux 環境中非常常見且實用。
互動式環境 (REPL)
當你執行 raku 指令且不帶任何參數時,將會進入 REPL 互動模式。
💡 什麼是 REPL?
REPL 是 Read-Eval-Print-Loop(讀取-求值-輸出-循環)的縮寫,是一個能夠即時反饋的互動式開發環境。
$ raku
To exit type 'exit' or '^D'
>
在此模式下,你每輸入一行程式碼,就能立刻看到執行結果:
> say "Hello World";
Hello World
>
REPL 模式最大的優勢在於無需建立檔案即可獲得即時反饋。當你想快速測試 Raku 語法或練習新觀念時,這是一個非常理想的工具。
鎖定語言版本
由於 Raku 目前屬於較小眾的語言,幾乎沒有歷史包袱(Legacy code),因此鎖定語言版本通常不是必要的步驟。即便如此,Raku 仍然提供了指定版本的語法:
use v6.d;
你可以在每個 Raku 程式碼的開頭加上這行指令。這樣做可以確保整個專案(Codebase)都嚴格遵循相同的語法特性與標準。
製作 Unix 可執行檔
如果你想將 Raku 腳本直接當成 Unix/Linux 系統中的獨立指令執行,可以透過以下步驟達成:
在 Raku 腳本的第一行加上此路徑宣告:
#!/usr/bin/env raku
在終端機中使用 chmod 指令為腳本(例如名為 myapp 的檔案)加上可執行權限:
$ chmod +x myapp
接著就能像一般指令一樣直接呼叫它:
$ ./myapp
💡 注意事項:當腳本被當作 Unix 執行檔使用時,檔案名稱通常不需要加上副檔名(例如不使用
.raku)。這是 Unix 系統的共通標準與習慣。
排版元素
除了必要的空白外,Raku 並沒有嚴格限制排版樣式。然而,為了提升程式碼的可讀性,良好的排版與縮排仍是開發時的最佳實踐。
註解(Comments)
Raku 提供了三種註解方式:
- 單行註解:使用
#,其後方的文字皆視為註解,不會被執行。 - 多行 / 內嵌註解:使用成對的
#加括號(例如#`(與))。可用於單行內嵌或跨越多行。 - 文件註解(Pod):使用
=begin comment與=end comment包裹大段說明的文字。
表達式(Expressions)與敘述式(Statements)
- 表達式(Expression):指「會運算並回傳數值」的程式碼片段。例如:
42"Hello"$n + 1
- 敘述式(Statement):指「會執行某個動作或產生效果」的完整指令。例如:
my $n;(宣告變數)$n = 42;(賦值)say "Hello World";(輸出文字)
主流的指令式(Imperative)與物件導向(Object-Oriented)程式語言多以敘述式為主。Raku 延續了 Perl 的設計哲學,雖然整體架構以敘述式為核心,但在許多語法情境中,都能靈活嵌入並運用表達式。