Lua
本頁面編寫未完成,但已停止更新。有意向的用戶可以繼續更新本頁並移除此模板。 |
Lua(luːə)程序設計語言是一個簡潔(易於編輯)、輕量、可擴展的腳本語言。純粹的Lua是進行一些運算並向控制台輸出文本。本教程主要包括了如何使用Lua、Lua的語法,以及自帶的一些功能,還有MediaWiki中使用Lua模塊的方法。
使用Lua語言
編輯安裝使用
編輯搭建環境
編輯Lua安裝、源代碼可以在Lua官網(英文)下載。這需要使用C++語言,操作較為複雜。安裝方法可以參見官方網站(英文)。可以按照Lua官網上的集成方法,如lua.exe和luac.exe。以lua.exe為例,直接打開lua.exe可以進行交互式編程;或者設置環境變量,然後在命令行窗口中輸入lua進行交互式編程(按Ctrl+C可退出解釋器),或者輸入「lua 文件地址」運行Lua。文件地址可以從資源管理器選擇文件,然後拖動到cmd窗口。
以下是Lua的命令行窗口的交互式編程模擬圖:
> print"你好,世界!" 你好,世界!
>直接用lua.exe打開lua文件也行,但是文件運行完成後就會立即關閉窗口(python也是如此)。因此可以使用io.read()
或while true do end
使其不會運行結束。
使用第三方軟件
編輯LuaStudio軟件也比較適用,但是只支持Lua 5.1,版本太舊,並且只有30天試用期。破解版可以破解試用期,但是不穩定,易崩潰。其他可用於編輯Lua的軟件有Script.net、SciTE(但都只適用於較舊的版本),以及EmmyLua(基於其他的軟件,安裝困難,且有點吃內存)。推薦使用Subline Text
使用在線編輯運行
編輯此外也可以在網站上在線輸出,該網站使用的Lua通常是最新版的,需要開啟JavaScript(默認是開啟的),並且不需要安裝任何擴展組件。
輸出
編輯Lua程序的基本內容,就是通過計算,將值輸出到控制台上。這需要使用到自帶函數print()
[註 1]。
這是一個最簡單的Lua:
print"你好,世界!"
執行後,你將會在控制台上看見以下內容:
你好,世界!
有時,我們可以用類似於cmd窗口的格式運行Lua。這種稱為「交互式編程」。帶>
號的表示輸入的內容,不帶>
號的表示輸出的內容。這種方法往往更加及時,輸入一行即可執行一行。這種方法與使用Lua文件有些不同,例如可以直接在第一行加一個等號以表示輸出,或者連等號都不要,直接是表達式(僅限於較新版本的Lua)。如果一行是一個函數調用,不管函數進行什麼操作,只要它返回了值,就會顯示返回的值。
>"你好,世界!"
你好,世界!
>a="你好,世界!"
>print(a)
你好,世界!
變量及數據類型
編輯Lua的函數需要對數據進行運算,最後輸出文字。在運算過程中,我們可以給一些數據賦值(也叫創建變量)。這樣,我們可以在多處重複使用一個數據,並對數據進行複雜的運算。
相關定義
編輯例如,這個簡單的表達式:x=5
。它的意思是給變量x賦值為5,或者說是將變量x的值(由nil)修改為5。
在這裡,x是標識符(也叫名稱),5是它的值。等於號就是給數據賦值,它屬於一個操作。
變量
編輯變量用不帶引號的英文字母、數字和下劃線表示,且不能以數字開頭,例如上面的x
。
對於一個表(下面會學到),它的域也屬於變量。具體請參見表段落。
值
編輯值擁有數據類型。在計算中,軟件就會將它的值代入變量以進行計算。例如x變量的值為5,那麼x+1的值就是6(因此表達式也可以有值,這個值就是它的計算結果)。print(x+1)
就會在控制台上輸出文字6。
全局變量與局部變量
編輯變量分為全局變量、局部變量和表中的域。全局變量就是在整個Lua文件中賦值,在賦值後的任何地方都起效果。需要注意的是,Lua文件像JavaScript一樣,是從前往後按步驟計算。
局部變量是在某一個具有開始、結束的代碼塊中使用的,只在這個範圍中有效,超出這個範圍之後就是nil或者其他的全局或局部變量。
do
local x=2
print(x) -- 会输出2
end
print(x)
--會輸出nil
表的用法見表段落。
類型
編輯Lua的變量的值有以下這些類型:空、布爾、數字、字符串、用戶自定義、函數、線程和表。MediaWiki中的Lua不能使用用戶自定義和線程,因此本書主要介紹幾種較主要的數據類型。
空
編輯空表示這個變量不存在(未創建或者已經刪除),我們用nil表示它。凡是不存在的變量都是nil。賦值(創建變量)的實質就是將變量的值由nil修改為存在的值,刪除變量的實質就是將變量的值由存在的值修改為nil。如果創建一個表,那麼所有的沒有定義的域的值都會是nil。
數字
編輯數字是描述一個大小的值,可正可負。數字又分為兩種:整數與浮點數。
布爾值
編輯布爾值描述一個數據是真還是假,通常用表達式得出,可用true或false表示,並用於一些邏輯運算。需要注意,對於其他類型的值,在邏輯運算中,只有nil和false會視為假。
字符串
編輯字符串描述一行或多行文字。可以用"字符串內容"
(半角雙引號圍住)、'字符串內容'
(半角單引號圍住)、[[字符串內容]]
(兩層中括號)或[===[字符串內容]===]
(夾雜等號的中括號)表示。用引號表示的字符串可以使用"\n"
、"\a"
等轉義符號。
表
編輯表可以有規律地儲存多個值。每一個表都分為一個、多個或零個字段(field),字段包括鍵(key)和值(value)。
函數
編輯函數是Lua的另一種數據,用於調用。
- ↑
io.write()
等函數也是可用的