local x=10
print(x) -- 輸出 10
y=20
print(y) -- 輸出 20
Lua有八種基本數據類型:
local var=nil
print(var) -- 輸出 nil
local is_valid=true
print(is_valid) -- 輸出 true
local num=3.14
print(num) -- 輸出 3.14
local str="Hello, Lua!"print(str) -- 輸出 Hello, Lua!
local tbl={ key1="value1", key2="value2" }
print(tbl.key1) -- 輸出 value1
local function add(a, b)
return a + b
end
print(add(2, 3)) -- 輸出 5
if 語句用于根據條件執行不同的代碼塊。
local x=10
if x > 5 then
print("x 大于 5")
elseif x==5 then
print("x 等于 5")
else
print("x 小于 5")
end
for 循環有兩種形式:數值 for 循環和泛型 for 循環。
數值 for 循環用于按順序迭代一系列數字。
for i=1, 10 do
print(i)
end
泛型 for 循環用于迭代表中的元素。
local tbl={ "a", "b", "c" }
for index, value in ipairs(tbl) do
print(index, value)
end
while 循環用于在條件為 true 時重復執行代碼塊。
local i=1
while i <=10 do
print(i)
i=i + 1
end
repeat-until 循環類似于 while 循環,但它會至少執行一次循環體,然后在條件為 false 時繼續執行。
lua是一款輕量級,可拓展的并且區分大小寫的腳本語言。
nil --> 無效值,在條件表達式中表示false
boolean --> false 和 true
number --> 數字類型
string --> 單引號或雙引號表示的字符串
function --> 函數
userdata --> 用戶自定義數據類型,存儲
thread --> 獨立線程
table --> 數組
table類型
local tb1={};
local tb2={"apple", "orange", "peach"}
for k, v in pairs(tb2) do
print(k .. ":" .. v)
end
function類型
function factorial(n)
if n==0 then
return 1
else
return n * factorial(n - 1)
end
end
-- 調用函數
print(factorial(5)) -- 120
-- 三種類型: 全局變量, 局部變量, 表中的域
a=5 -- 全局變量
local b=4 -- 局部變量
function test()
c=5 -- 全局變量
local d=8 -- 局部變量
end
-- 賦值語句
a, b=10, 20
a, b, c=1, 2 -- 1, 2, nil
a, b=1, 2, 3 -- 3會別忽略
-- while循環
-- for循環
-- repeat..until 重復執行循環,直到條件為真為止
-- 循環嵌套
-- 循環控制語句 break, goto
-- repeat ... until 例子
local a=1
repeat
print("a的值為:", a)
a=a + 1
until(a > 10)
-- 無限循環
while(true)
do
print("----")
end
-- lua中 0 為true
if(0) then
print("0為true")
end
-- 例子1
if(0) then
print("----")
else
print("====")
end
-- 例子2
if(0) then
print("----")
elseif(a==10)
print("====")
else
print("xxxxx")
end
-- 函數定義
-- 全局函數
function test()
-- 函數體
end
-- 局部函數
local function test2()
-- 函數體
end
-- 兩數相加
function add(num1, num2)
return num1 + num2;
end
function myprint(result)
print(result)
end
-- 函數作為參數
function add(num1, num2, myprint)
local result=num1 + num2;
myprint(result)
end
-- 多返回值
local arr={5,8,3,4,9,7}
-- 返回最小值和最大值
function maxMinNum(arr)
local max=arr[1]
local min=arr[1]
for k, v in pairs(arr) do
if min > arr[k] then
min=arr[k]
end
if max < arr[k] then
max=arr[k]
end
end
return min, max
end
min, max=maxMinNum(arr)
print("min: " .. min)
print("max: " .. max)
-- 三種表示方式
s1="lua"
s2='lua'
s3=[[lua]]
-- 字符串操作
string.upper(arg) -- 字符串轉大寫
string.lower(arg) -- 字符轉小寫
string.gsub(mianString,findString,replaceString,num) -- 字符串替換, num替換次數,省略則全部替換
-- 例子: string.gsub("aaaa", "a", "z", 3) -- zzza
string.find(str, substr, [init, [plain]])
-- 在指定字符串str中搜索substr, 找到了一個匹配的子串,就返回這個子串的起始索引和結束索引,不存在則返回nil。 init為搜索的起始位置, plain: 表示是否以正則表達式匹配
string.reverse(arg) -- 字符串反轉
string.format(...) -- 返回格式化字符串 string.format("the value is: %d", 8)
string.char(arg) 和 string.byte(arg[,int])
-- char將整形數字轉成字符并拼接,byte轉換字符串為整數值, 默認第一個字符
string.char(97,98,99,100) -- abcd
string.byte("ABCD", 2) -- 66
string.len(arg) -- 字符串長度
string.rep(string, n) -- 返回字符串的n個拷貝
.. -- 拼接兩個字符串
string.sub(s, i [, j]) -- s:要截取的字符串, i: 截取的開始位置, j:截取的結束位置
array={"lua", "java"}
for i=0, 2 do
print(array[i])
end
-- 遍歷數組
for key, value in pairs(array)
do
print(key, value)
end
-- 定義模塊(module)
-- 創建module.lua文件,內容如下
-- module
-- 定義一個名為module的模塊
module={}
module.name="whale" -- 常量
function module.func1()
io.write("this is public function!")
end
-- 局部變量函數, 外部不能直接訪問,只能通過模塊內的public的函數來調用
local function func2()
print("this is private function!")
end
function module.func3()
func2()
end
return module
-- 在test.lua文件中引用
-- require("module")
-- local m=require("module")
-- 指定加載module的路徑
package.path='C:\\Users\\Desktop\\?.lua;'
require "module"
print(module.name)
module.func3()
-- I/0庫用于讀取和處理文件
-- 簡單模式: 擁有一個當前輸入文件和一個當前輸出文件,并且提供針對這些文件相關的操作
-- 完全模式: 使用外部的文件句柄來實現
file=io.open(filename [, mode])
--[[
mode:
r: 只讀方式打開,文件必須存在
w: 打開只寫文件,若文件存在則長度清0,若文件不存在則建立該文件
a: 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,若文件存在,寫入的數據會追加到文件尾部
r+: 以可讀可寫方式打開文件,文件必須存在
w+: 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件
a+: 與a類似,但此文件可讀可寫
b: 二進制模式,如果文件是二進制文件,可以加上b
+:表示對文件可讀可寫
]]--
-- 簡單模式
file=io.open("test.lua", "r")
io.input(file)
print(io.read()) -- 輸出文件第一行
io.close(file) -- 關閉打開的文件
file=io.open("test.lua", "a")
io.output(file)
io.write("xxxx")
io.close(file)
-- 完全模式
file=io.open("test.lua", "r")
print(file:read()) -- io.read() --> file:read()
-- 讀取文件
for line in io.lines("C:\\Users\\Desktop\\books.txt")
do
print(line)
end