這是一篇文章能讓你10 分鐘學會lua 基本用法的教學文
底下是這篇文章會介紹到的基本用法,灰色部分會在其他章節中另外介紹
Lua Basics
Comment
String
Number
Variable scope
Ternary Operator
Loop Activity(while, repeat)
Table
Multiple Assignment
Function
Module
Metatables
Prototype Based OO Programming
LuaJIT - FFI Library
#Lua Basic
Comment
String
輸出結果如下
Size of string is 4
Number
輸出結果如下
Type is number
9223372036854775807
-9223372036854775808
float precision is 1.1234567890123
Variable scope
輸出結果如下
You can go to school
10
nil
Ternary Operator (三元運算子)
如果寫過C的寶寶們應該知道 x = (condition) ? (if-match) :( if not match) 這種寫法,在lua也有喔 只是? :變成and 和 or
輸出結果如下
x is negative
x is negative
Loop Activity
在lua中的迴圈可以簡單分為三種 for, while..do, repeat...until,因為for在很多範例中會介紹,這裡就不多介紹
- while
輸出結果如下
i= 1
end
i= 2
continue
i= 3
break
- repeat
輸出結果如下
value is: 3
value is: 2
value is: 1
value is: 0
Table
Table,我覺得這可以說是lua實現黑魔法的開始,table中可以放各種東西,function, string, number...所有東西都能放到table並且也可以輕鬆地使用
先從一個簡單的例子來看
輸出結果如下
(1)January
(2)February
(3)March
(4)April
* January
Number of Items is 4
那如果我們在table中塞入不同類型的參數就如下面
輸出結果如下
Hi
iris
Multiple Assignment
這個用法挺方便的,假如我有一個座標是(3,5) 程式碼就能寫成 x,y = 3,5 這樣x就被給予3這個值, y就被給予5這個值,如果同時要assign相同類型的變數,可以用這個方法,下面有個簡單的範例
輸出結果如下
3 5
4 4
Function
前面的範例就有用到簡單的function, 而function 的回傳值就用到multi-assignment的概念
那這個範例順便包含了字串的處理,也有提到在字串處理常使用到正規表示式,相對而言比較方便的語法
輸出結果如下
1: She
2: is
3: a
4: girl
5: nil
Module
Module 中文式模塊的意思,他可以用require() 呼叫的library,並且具有包含表的單個全局名稱
該模塊可以包含許多功能和變量。所有這些函數和變量都包裝在表中,該表用作名稱空間。
前面這些太難懂了,簡單來說 Module就是一個table
寫一個module的方法如下
這邊就能很簡單的理解module就是一個table,那要在另外一隻檔案中引用它也很簡單
輸出結果如下
Hello World!
BMC
感谢很好的入门教程
回覆刪除用的lua 5.3
最后一个return Engineer lua总是报错
看起来和文档的example 没差
https://www.tutorialspoint.com/lua/lua_modules.htm
模仿spx code 去写就没什么问题不过看起来结构不太一样:
function module()
-- 先新增一個table
local module_table = {}
module_table.Type = "BMC"
function module_table.sayHi(...)
print("Hello World!")
end
return module_table
end
-- 這邊engineer 就可以看成一個table
local container = module()
-- 可以用module中的各種變數或函數
container.sayHi()
print(container.Type)
eyer@mega1:~/lab$ lua eyer.lua
Hello World!
BMC