lua学习笔记1--基础语法

print("打印日志");--单行注释 
--[[
多行注释
--]] 
a = 30 --变量的类型,是由变量储存的数据决定 

数据类型:
  number:数值类型,可以存储整数和小数
  boolean:布尔类型,只有true和false
  string:字符串类型,单引号和双引号都可以
  type()方法,可以获取一个变量的类型

print(type(123)) --打印出number 
print(type(true)) --打印出boolean 
print(type("aaa")) --打印出string 

运算符号:
  "+","-","*","/","%" :仅仅指数学意义上的加减乘除取余
  "=" :赋值符号
  "..":连接字符串
  lua没有++ -- += -= *= /= %=
关系符号:

  >大于 <小于 >=大于等于 <=小于等于 ==等于 ~=不等于
逻辑符号:

  and:相当于&& or:相当于|| not:相当于! --]]

print(5 > 3 and 6 > 5) --true 
print(5 > 3 or 5 > 10) --true 
print(not true) --false

条件语句(lua中没有switch case)

if(布尔表达式)

then

   代码体

elseif(布尔表达式)

then

   代码体

else

   代码体

end

num = 10
if (num > 5)
then
   print("A")
elseif (num < 4)
then
  print("B")
else
  print("C")
end

循环语句

for语句:

for i = 初始值, 省略版条件表达式, 步长 do

  代码体

end

while语句:

while(条件表达式) do

   代码体

end

repeat until语句:

repeat

  代码体 ****注意:条件为false才执行代码体

until(条件表达式)

break立即结束当前循环 lua没有continue

for i = 0, 10, 1 do
  print(i)
end

num1 = 0
while(num1 < 10) do
  print(num1)
  num1 = num1 + 1
end

num2 = 0
repeat
  print(num2)
  num2 = num2 + 1
until(num2 < 10)

数组:
  数组名 = { 数据1,数据2,数据3,数据n }

  lua数组可以存放多种不同类型数据

  *取数组长度:table.getn(数组名)

  **特别注意:lua数组下标从1开始 lua数组长度不固定,声明数组后,仍然可以增加新的数据(给后续的索引位置继续赋值)

arrayTest = { 1, true, 1.111 }
for i = 1, table.getn(arrayTest), 1 do
   print(arrayTest[i])
end

--增加新数据
arrayTest[4] = "abc"
print(arrayTest[4])

函数:

[局部/全局] function 函数名([参数列表])

  函数体

end

特别注意:Lua代码顺序必须先定义函数,才能在下面调用

**Lua可以直接将函数当做参数来传递

--print(Hello()),这里会报错,代码顺序必须先定义函数才能调用

--无参无返回值
function Hello()
  print("asdasg")
end

--有参有返回值
function Add(a, b)
  return a + b
end
print(Add(1, 2))

--直接将函数当做参数来传递
function AddDel(a, b, func)
  return func(a, b)
end
testnum = AddDel(10, 20, Add)
print(testnum)

变量作用域:

  lua中的变量默认全部是全局变量,就算是声明在函数内的变量,也是全局变量. 如果想在lua中声明局部变量,需要使用"local"关键字声明

  变量的默认值是nil

function Test()
  testValue = "absasd"--全局变量
  print(testValue)
  local a        --局部变量
  print(a)        --nil
end

Test()
print(testValue)     --可以直接使用全局变量testValue

函数作用域:

  lua语言中的函数默认全部是全局函数,如果想设置为局部函数需要使用"local"关键字声明

  仅对外部访问有用,相当于访问权限private,public

字符串三种表现形式:
  双引号"string"
  单引号'string'
  两个中括号
  *两个中括号包裹的字符串是原格式输出
  *字符串连接用两个点..

str1 = "test1"
str2 = 'test2'
str3 = [[test3]]
print(str1, str2, str3)
print(str1..str2)

字符串操作:
  string.upper(字符串):字母全部转大写
  string.lower(字符串):字母全部转小写
  string.reverse(字符串):将字符串进行位置反转
  string.len(字符串):返回字符串长度,单个字母数字符号都长度为1,单个汉子长度为2
  string.gsub(原始字符串,旧字符串,新字符串,[替换个数]):替换字符串,返回新的字符串
  在原始字符串中查找旧字符串,如果找到了,就用新字符串把旧的替换掉;
  替换次数可以不写,默认全部替换

print(string.upper("abcd"))    --ABCD
print(string.lower("EFGH"))    --efgh
print(string.reverse("abc"))--cba
print(string.len("abc"))    --3

strTest1 = "abcde"
strTest2 = string.gsub(strTest1,"abc","a")
print(strTest2)    --ade

字符串格式化:

  string.format(字符串格式,变量1,变量2,变量n)
  %s表示字符串
  %d表示整数数字
  %f表示小数,保留有效小数位 %.1f保留1位小数,%.2f保留2位小数

str = string.format("name:%s,age:%d,money:%.2f", "asd", 18, 1.54321)
print(str)  --name:asd,age:18,money:1.54

 

posted @ 2019-08-12 18:10  亲爱的贤锅锅  阅读(304)  评论(0编辑  收藏  举报