Lua基本用法

作者: ropon 分类: 经验分享 发布时间: 2022-02-09 16:12
#!/usr/local/bin/lua

print("hello world!")
--单行注释
--[[
多行注释
多行注释
]]--

-- 默认变量被认为是全局的,全局变量不需要声明
print(A)
A = 10
print(A)
-- 删除一个全局变量,只需将变量赋值为nil

--[[
数据类型
nil 
boolean
number 双精度类型的实浮点数
string 单双引号的字符串
function c或lua编写的函数
userdata 任意存储在变量中c数据结构
thread 执行的独立线路,用于执行协同程序
table 关联数组,数组的索引可以是数字、字符串或表类型。table的创建是通过构造表达式来完成,最简单构造表达式{} 空表
]]--
print(type("hello world!"))
print(type(3.14*3))
print(type(print))
print(type(type))
print(type(true))
print(type(nil))

-- .. 字符串链接符
Tab1 = {key1 = "val1", key2 = "val2", "val3"}
for k,v in pairs(Tab1) do
  print(k .. " - " .. v)
end

Tab1.key1 = nil
for k,v in pairs(Tab1) do
  print(k .. " -- " .. v)
end

-- 字符串块
local gocode = [[
package main

import "fmt"

func main() {
  fmt.Println("hi ropon!")
}
]]
print(gocode)

print(3.14 .. 15926)

-- #来计算字符串的长度
Str1 = "www.ropon.top"
print(#Str1)

-- 创建一个空的table
local tab1 = {}
-- 直接初始化表
local tab2 = {"go", "python", "php", "lua"}

print(...)
local a = {}
a["key"] = "val"
local key = 10
a[key] = 18
a[key] = a[key]+1
for k,v in pairs(a) do
  print(k .. " : " .. v)
end
-- 注意表的索引默认是从1开始
print(...)
for k, v in pairs(tab2) do
  print("key", k)
end
-- 函数
function Func1(n)
  if n == 0 then
    return 1
  else
    return n* Func1(n -1)
  end
end

print(Func1(5))
local func2 = Func1
print(func2(5))
-- 匿名函数
function TestF1(tab, fun)
  for k ,v in pairs(tab) do
    print(fun(k,v))
end
end
local tab={key1="val1", key2="val2"};
TestF1(tab,
--匿名函数
function(k,v)
  return k.."="..v;
end)
-- 循环
-- while true do

-- end

-- for index, value in ipairs(t) do

-- end

-- for key, value in pairs(t) do

-- end

-- 字符串操作方法
print(string.upper("ropon"))
print(string.lower("Ropon"))
-- 要操作的字符串/被替换的字符/要替换的字符/替换几次
print(string.gsub("www.ropon.top","ropon","pengge",1))
print(string.find("www.ropon.top","ropon",1))
print(string.reverse("ropon.top"))
print(string.format("my name is %s,age is %d","ropon",18))
print(string.len("ropon.top"))
print(string.sub("www.ropon.top",1,3))

-- 数组 索引默认从1开始,也可以从0开始
local arr1 = {"golang","lua"}
for i=0,2 do
  print(arr1[i])
end

local arr2 = {}
for i = -2, 2 do
  arr2[i] = i*2
end

for i = -2, 2 do
  print(arr2[i])
end
-- 多维数组
local arr3 = {}
for i = 1, 3 do
  arr3[i] = {}
  for j = 1, 3 do
    arr3[i][j] = i*j
  end
end

for i=1,3 do
  for j=1,3 do
     print(arr3[i][j])
  end
end

require("module")

print(module.constant)
module.func3()

local m = require("module")
m.func1()

local req = require("socket.http")
body,ret = req.request("https://ip.ropon.top")
print(body)

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!