Scribunto 簡介/您的第一個模組
現在您已經設定了 Scribunto 的工作版本,現在該編寫您的第一個 Lua 程式了。這個程式將只輸出文本 "Hello, world!"。也許本身沒什麼用,但總得從某個地方開始。
首先,我們將在除錯控制檯中執行程式,這是一個文字輸入框,您可以用它來嘗試 Lua 程式碼。要找到除錯控制檯,請在“編輯”模式下進入任何模組頁面。您應該在頁面底部附近看到它。[1] 它看起來像這樣
找到除錯控制檯後,點選文字輸入框,輸入以下程式碼,然後按回車。
按回車後,您應該在您編寫的文字下方看到以下內容
恭喜!您剛剛編寫了您的第一個 Lua 程式。讓我們更詳細地看一下程式碼。
程式開頭的等號 (=) 是除錯控制檯中使用的特殊命令,用於運行當前行的程式碼。它必須用在行的開頭,並且只能在除錯控制檯中使用。因此,在我們的程式中,程式碼 = "Hello, world!" 表示“執行程式碼 "Hello, world!"”。
兩個雙引號 ("") 告訴 Lua 將它們裡面的所有內容都當作文字塊來處理。程式設計師稱此類文字塊為字串。如果您不包含雙引號,Lua 會認為您要輸入命令,並會感到困惑。
Lua 知道你在某個地方犯了錯誤,但不知道具體是什麼錯誤,所以它猜測你需要在某個地方加上 ")"(在這種情況下是錯誤的)。
請注意,空格無關緊要。您可以在等號和 "Hello, world!" 之間放置任意數量的空格。
在這個階段,您可能想知道如何讓我們的程式顯示在維基頁面上。為此,事情會稍微複雜一些。Scribunto 的建立者,以他們無限的智慧,決定 Scribunto 程式必須以某種特定的方式結構化,並且某些 Lua 函式(例如 print 函式)應該不可用。這樣做是為了提高 Scribunto 使用者編寫的程式碼的質量。理論認為,教人們養成良好的習慣比使用 print 等函式的便利性更重要。這意味著,在標準 Lua 中編寫一個非常簡單的程式,在 Scribunto 中會變得更加複雜。我們需要編寫以下程式碼
p = {}
function p.hello_world()
return "Hello, world!"
end
return p
要執行這段程式碼,我們需要建立一個新的模組頁面。我們將使用 "Module:Hello",但您可以隨意命名。要訪問新頁面,您可以使用語法 [[Module:Hello]] 建立指向您的模組的連結,然後點選該連結,或者您可以在 URL 中將頁面名稱替換為 "Module:Hello"。一些維基,例如英文維基百科,如果您在搜尋欄中輸入 "Module:Hello",也會提供一個連結供您點選。到達模組頁面後,點選頁面頂部的“編輯”或“建立”選項卡,以獲取編輯檢視。然後將上面的程式碼複製貼上到編輯框中,並儲存頁面。您的模組現在已準備就緒,可以運行了。
您可以在維基上的任何普通頁面執行程式碼,例如 您的使用者頁面 或 沙盒頁面。編輯頁面,並輸入以下文字
{{#invoke:Hello|hello_world}}
如果您將模組命名為 "Module:Hello" 以外的其他名稱,請將第一個 "Hello" 替換為您的模組名稱。然後儲存頁面。該頁面現在應該顯示文字“Hello, world!”。如果成功了,給自己拍拍手吧。您剛剛編寫了一個 Lua 模組,並從維基文字中顯示了它;這可不是每個維基編輯都能做到的。
上面的模組程式碼中包含一些我們不熟悉的概念。不要太擔心它們。現在,您只需要知道這段模組程式碼將在維基頁面上生成 "Hello, world!" 就可以了。在學習本書的後續內容時,您將瞭解所有其他概念。