LuatOS的入门笔记

lua 简介

LuatOS是一款针对嵌入式的脚本运行框架,可以极大提升开发效率。
使用Lua 5.3作为主要语言,针对资源较少的嵌入式环境进行了优化,极大提升了运行效率。
Powerful embedded Lua Engine for IoT devices, with many components and low memory requirements (16K RAM, 128K Flash) 参考手册

lua基本语法学习

在lua语法中变量有:nil、boolean、number、string、userdata、function、thread、table
变量类型基本上从命名方式就能判断一二,需要注意的是
1.在lua中0,不代表false。nil代表fale。
2.table表中,下标初始值是1,而不是0.
3.function 函数也可以作为一个变量进行传递 ,比如在table中 table1= {function(a,b) return a+b end}

以下学习代码,可以使用lua模拟器运行

PROJECT="全名名称"
VERSION="0.0.1"

-- 引入依赖
sys=require"sys"
-- 输出控制台内容
print("hello lua")
--赋值
a=1
b=2
print("赋值操作 ",a,b)
--多重赋值
c,d=3,4
print("多重赋值",c,d)
-- sys.timerLoopStart(print, 1000, "test")
--nil
--print(x)

-- number 类型 ,lua只有number一种数字  类型,包含了浮点,整数等等
number1=1
number2=0x11
number3=2e3
print("整数",number1)
print("十六进制",number2)
print("科学计数法",number3)
print("次方",2^3)
print("移动数",2<<3)

-- 字符串
str1="字符串的创建"
str2='字符串创建单引号'
str3="字符串 \n 换行转义"
str4=[[多行文本
            原封不动
             输出
]]
str5="拼接".."字符"
str6="数字转换为字符串"..tostring(number1)
-- number转换为字符串:转换失败的值为 nil
str7=101
number4=tonumber(str7)
number5=#"获取字符串长度使用#"
print(str,str2,str,str5,str6,number4,str8)
print(str4)

-- 函数 
function fun01(a,b)
    print("我是加法",a+b)
end

function fun02(a,b)
    result=a-b
    print("我是减法",result)
    return result
end
fun01(1,2)
result=fun02(2,1)
print("函数的返回值",result)

-- 函数也可以返回多个值
function fun03(a,b)
    print("函数同时执行加法和减法")
    return a+b,a-b
end
local out1,out2= fun03(2,2)
print(out1,out2)

-- table:数字下标,字符串下标
-- 1.数字下标方式的数组
local arr1={1,"元素可以为字符串",{"可以是另一个数组"},fun01}
print("获取数组的值 下标是从1 开始的:",arr1[3][1])
arr1[5]="在制定位置修改或者新增一个值"
print(arr1[5])
table.insert(arr1, "在尾部新增的值")
print("新增一个值:",arr1[6])
table.insert(arr1, 2,"在指定位置新增的值")
print(arr1[2])
tableRemoveObj=table.remove(arr1,2)
print("移除指定位置的元素",tableRemoveObj)
print("统计一个table中有多少个元素",#arr1)
-- 2.字符串下标方式的table数组【类似于java的map】
arr2={
    a=1,
    b="2",
    c=fun03,
    ["123"]=123
}
print("下标为字符串的table输出值:",arr2.a)
print("使用table中的函数",arr2["c"](1,2))
print("读取table中字符串角标的值",arr2["123"])
-- 为数组赋值
arr2["1234"]="为角标1234数组赋值"
print("为数组赋值",arr2["1234"])
-- 全局表G:所有的全局变量的偶在G中,包含所有自己定义的和系统的函数,比如table,table.inster 方法都是
print("打印全局变量G",_G)
testG="测试全局变量"
print(_G["testG"])
print(_G["table"],_G["table"]["insert"])
-- 布尔类型:注意点不等符号 ~=
boolean1=true
boolean2=false
print(boolean1,boolean2)
print(2>1,1<2,1==2,1>=2,1<=2,1~=2)
print(2>1 and 1<2)
print("与或非",1 and false,true or false,not false)
print("lua中只有false和nil 代表 假,其他的值包括0都为true",false,true and nil)
print("与或非不只是能返回true和false,可以返回其他值,可以使用and or实现短路求值"
,1>20 and "1<20" or "1>20")

-- if判断语句 if then end
print("if判断语句:使用方式 if 条件  then  end ")
if(nil) then
    print("0在lua中 是真")
elseif 1>10
then
print("条件 elseif ")
else
    print("条件else")
end

-- 循环操作
  print("for循环: i初始值,结束值,步长")
for i=1,10,1 do
    print(i)
    if(i==3) then break end
end
print("倒叙循环")
for i=3,1,-1 do
    print(i)
end

print("while 循环")

local w = 10
while w>5 do
    print(w)
    -- lua不支持--,++等操作
    w=w-1
end

-- 字符串补充
print("使用string.char 可以将ascii码转换为字符串")
local str9=string.char(0x30,0x31,0x32,0x33)
print(str9)
print("使用string.byte可以取出字符串中的某一个")
local byte1=string.byte(str9,2)
print(byte1,string.char(byte1))


-- 迭代器
print("lua迭代可以 使用for、 for iparis、for pairs")
local table2={1,2,3,4,5}



sys.run()
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容