lua学习笔记1--基础语法
print("打印日志");--单行注释
--[[
多行注释
--]]
a = --变量的类型,是由变量储存的数据决定
数据类型:
number:数值类型,可以存储整数和小数
boolean:布尔类型,只有true和false
string:字符串类型,单引号和双引号都可以
type()方法,可以获取一个变量的类型
print(type()) --打印出number
print(type(true)) --打印出boolean
print(type("aaa")) --打印出string
运算符号:
"+","-","*","/","%" :仅仅指数学意义上的加减乘除取余
"=" :赋值符号
"..":连接字符串
lua没有++ -- += -= *= /= %=
关系符号:
>大于 <小于 >=大于等于 <=小于等于 ==等于 ~=不等于
逻辑符号:
and:相当于&& or:相当于|| not:相当于! --]]
print( > and > ) --true
print( > or > ) --true
print(not true) --false
条件语句(lua中没有switch case)
if(布尔表达式)
then
代码体
elseif(布尔表达式)
then
代码体
else
代码体
end
num =
if (num > )
then
print("A")
elseif (num < )
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 = , , do
print(i)
end num1 =
while(num1 < ) do
print(num1)
num1 = num1 +
end num2 =
repeat
print(num2)
num2 = num2 +
until(num2 < )
数组:
数组名 = { 数据1,数据2,数据3,数据n }
lua数组可以存放多种不同类型数据
*取数组长度:table.getn(数组名)
**特别注意:lua数组下标从1开始
lua数组长度不固定,声明数组后,仍然可以增加新的数据(给后续的索引位置继续赋值)
arrayTest = { , true, 1.111 }
for i = , table.getn(arrayTest), do
print(arrayTest[i])
end
--增加新数据
arrayTest[] = "abc"
print(arrayTest[])
函数:
[局部/全局] function 函数名([参数列表])
函数体
end
特别注意:Lua代码顺序必须先定义函数,才能在下面调用
**Lua可以直接将函数当做参数来传递
--print(Hello()),这里会报错,代码顺序必须先定义函数才能调用 --无参无返回值
function Hello()
print("asdasg")
end --有参有返回值
function Add(a, b)
return a + b
end
print(Add(, )) --直接将函数当做参数来传递
function AddDel(a, b, func)
return func(a, b)
end
testnum = AddDel(, , 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")) --
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", , 1.54321)
print(str) --name:asd,age:18,money:1.54
lua学习笔记1--基础语法的更多相关文章
- Java学习笔记之---基础语法
Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...
- Hive学习笔记:基础语法
Hive基础语法 1.创建表 – 用户表 CREATE [EXTERNAL外部表] TABLE [IF NOT EXISTS 是否存在] HUserInfo ( userid int comment ...
- 【C语言C++编程学习笔记】基础语法,第一个简单的实例编程入门教程!
C语言/C++编程学习:一个简单的实例 让我们来看一个简单的C语言程序.从下面的程序可以看出编写C语言程序的一些基本特征. 如果你能知道该程序将会在显示器上显示一些内容,那说明你还是知道一些的! ...
- PHP学习笔记01——基础语法
<!DOCTYPE html> <html> <?php // 1.使用$加变量名来表示变量,php是弱类型语言,不要求在使用变量前声明,第一次赋值时变量才被创建 $a ...
- 01-Python学习笔记-基础语法
Python标识符 -d 在解析时显示调试信息 -O 生成优化代码 ( .pyo 文件 ) -S 启动时不引入查找Python路径的位置 - ...
- java学习笔记之基础语法(一)
1.java语言基础由关键字.标识符.注释.常量和变量.运算符.语句.函数和数组等组成. 2.1关键字 定义:被java语言赋予了特殊含义的单词 特点:关键字中所有的字母都是小写. 2.2用于定义数据 ...
- Java学习笔记之基础语法(顺序,条件,循环语句)
顺序结构:自上而下 条件分支选择结构: if条件语句 1,一旦某一个分支确定执行以后,其他分支就不会执行.if后面的条件必须是boolean类型 2,if 后面如果不加大括号,默认相邻的下一 ...
- Java学习笔记之基础语法(数据类型)
8种基本数据类型 整型: byte[1字节] short[2字节] int[4字节] long[8字节] 1,四种整型之间的区别:申 ...
- Python 学习笔记(基础语法 restful 、 Flask 和 Requests)
input 函数 #!/usr/bin/env python3 name = input("\n\n按下 enter 键后退出.") print(name) print() 在 p ...
随机推荐
- fwrite() and UTF8 转载
4 down vote If you know the data is in UTF8 than you want to set up the header. I wrote a solution a ...
- BZOJ 2631 tree / Luogu P1501 [国家集训队]Tree II (LCT,多重标记)
题意 一棵树,有删边加边,有一条链加/乘一个数,有询问一条链的和 分析 LCT,像线段树一样维护两个标记(再加上翻转标记就是三个),维护size,就行了 CODE #include<bits/s ...
- nginx 端口转发 (proxy_pass反向代理)
第一种(访问IP转发到IP+端口) server{ listen ; server_name 192.168.1.114; index index.php index.html index.htm; ...
- Leetcode部分题目整理(Javascript)
3.无重复字符的最长子串 /** * @param {string} s * @return {number} */ var lengthOfLongestSubstring = function(s ...
- 第三章 python数据规整化
本章概要 1.去重 2.缺失值处理 3.清洗字符型数据的空格 4.字段抽取 去重 把数据结构中,行相同的数据只保留一行 函数语法: drop_duplicates() #导入pandas包中的read ...
- 路由配置系统(URLconf)
URL配置(URLconf)就像Django所支撑网站的目录. 它的本质是URL与要为该URL调用的视图函数之间的映射表.你就是以这种方式告诉Django,对于URL(1)调用代码(1), 对于URL ...
- 【Eureka】 作为服务注册中心,Eureka比Zookeeper好在哪里
著名的 CAP 理论指出,一个分布式系统不可能同时满足 C(一致性) A(可用性) 和 P(分区容错性).由于分区容错性 P 是在分布式系统中必须保证的,因此我们只能在 A 和 C 之间进行权衡. Z ...
- Leetcode题目104.二叉树的最大深度(DFS+BFS简单)
题目描述: 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null, ...
- js最简洁的时间对象转成时间字符串的方法
getTimestr(val){ let temp = val.toLocaleString() if(temp.match(/[\u4e00-\u9fa5]/g)[0]=="上" ...
- 前端知识点回顾之重点篇——ES6的Iterator和Generator
Iterator 迭代器是一种接口.是一种机制. 为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员). Iter ...