#!/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)