1、io.read(...) 从stdin中读取数据
--> 代码当中有关io.read("*number")类型的,输入操作的都可以在lua.exe的程序当中写入运行
-- 限制只能输入 number类型的 local inputNum = io.read("*number") print(inputNum) -- 5
... 可选的参数:
"*all" 读取整个文件的内容
"*line" 读取一整行
"*number" 读取一段字符串,并将其转为 number 类型,无法转为number,则返回 nil
num 要读取的字符数
默认不填参数,则为读取整行
--> 使用 io.read("*number") 带来的问题
像类似的步骤,如果输入的是一个字符串的话,就会陷入一个死循环当中local nNum = nil local tNum = {} while true do nNum = io.read("*number") if nNum then table.insert(tNum, nNum) if #tNum > 10 then break end else print("输入不合法,请重新输入!") end end
解决的方法,就是不使用 "*number"模式,再加个 tonumber 进行转换nNum = tonumber(io.read())
2、Chunk指的是在一定范围内的一系列语句
chunk块,是lua的一个代码块,类似一个函数,chunk块可以是一行代码,可以是一个表达式,也可以是一个文件等
3、lua中文件之间的联系可以通过 dofile("filePath")
但是使用这种方法加载lua文件,会导致重复加载的情况
一般的情况下都是使用 require 来进行的
4、使用全局变量要慎重
要删除一个全局变量可以将其赋值nil就可以,否则该全局变量将伴随整个程序的运行,不会被垃圾回收机制清理掉
5、lua标识符
--> 由字母、下划线、数字组成,数字不能为开头
--> 大小写敏感
--> 避免使用下划线开头后面紧跟一个或多个大写字母,如:_VERSION
--> Lua保留字
and break do else elseif endfalse for function if in local nil not or repeat return then true until while
6、解释器程序
--> 在 UNIX 系统下,在 LUA 文件的开头第一行添加代码:
# !/usr/local/bin/lua 或 # !/usr/bin/env lua
在UNIX程序上就可以直接调用脚本文件,无需显式的调用Lua解释器
--> lua命令行参数
格式:
lua [options] [script[args]]
不使用任何的参数,则直接启动lua解释器
options:r
-e 可以直接在命令行中输入 代码
输出:lua -e "print(\"hello world\")"
hello world
-l 用于加载库文件
-i 在运行完其他命令行参数后进入交互模式。
-- test.lua function add(x,y) return x+y end
-i 将加载执行 test.lua,然后进入交互模式$>lua -i test.lua Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio > print(add(5,6)) 11
-v 显示lua的版本信息
使用 "lua lua文件名" --> 执行该lua文件
在交互模式中,如要打印任何表达式的值,可以用等号开头,并跟随一个表达式。,这样有助于把lua当做计算器来使用
> =5+5 10
7、";" 分号的使用
在Lua中 分号的使用是非必须的,但是有时候分号可以让代码更加的清晰
--> 在一行中存在多条语句时
a = 10 b = 20 -- 这样看起来不太清晰 a=10; b=20 -- 这样就好一些,但是最好是分行
--> 在表中分类
food={"apple","peach","tea","juice"} -- 放置食物的表 food={"apple","peach";"tea","juice"} -- 在表中又用分号,分类水果和饮品
8、代码注释
--> 行注释 --
--> 块注释 --[[ ... --]]
--> 特殊的块注释, 在块注释的等号之间添加同等数量的"="
如果不使用特殊的块注释的话,那么,那么上面的注释就会报错--[==[ local str = [[ hello \nworld ]] print(str) -- hello \nworld --]==]
--> 在块注释的 -- 和 [[或[=...[ 之间加个空格,则会解开注释