- 1.HelloWorld
- 函数关系
- 代码结尾
- 命名规则
- 2.代码注释
- 单行注释
- 多行注释
- 文档注释
- 3.变量
- 语法格式
- 命名规则
- 4.基本数据类型
- 类型区别
- 数值类型
- 布尔类型
- 字符串类型
- char类型
- 语言对比
- 5.特殊符号
- +
- ++与--
- 6.常用运算符
- 复合赋值运算符
- 关系运算符
- 逻辑运算符
- 7.分支结构
- if语句
- if...else...语句
- if...else if...语句
- switch...case...语句
- 8.循环结构
- for语句
- while语句
- do...while语句
- 关键字
- 9.数组
- 基础概念
- 代码格式
- 10.函数
- 语法格式
- 代码顺序
- 函数作为参数传递
- 作用域区别
- PS:
C#:有明确的所属类 Lua:一个独立的方法,无明确的所属类
代码结尾C#:必须以;结尾,否则语法错误 Lua:不需要结尾符号,或者以;号结尾
命名规则C#:方法和类都是帕斯卡命名法 Lua:全小写?
2.代码注释 单行注释C#:// Lua:- - 这里中间没空格,因为CSDN连着两个-会合并成一个
多行注释C#:/* */ Lua:- -[[ - -]],- -[[ ]],- -[[ ]]- -
文档注释C#:/// Lua:没有?
3.变量 语法格式C#:数据类型 变量名 = 值 Lua:变量名 = 值
命名规则C#:驼峰命名法 Lua:驼峰命名法;全小写?
4.基本数据类型 类型区别C#:强类型语言,声明变量必须要明确的指定数据类型 Lua:弱类型语言,声明变量时不需要指定类型, 变量的类型由变量内存储的数据决定
数值类型C#:int,float,double Lua:number
布尔类型C#:bool Lua:boolean
字符串类型C#:必须使用双引号包裹 Lua:可以使用双引号,也可以使用单引号或者两个中括号[[]](中括号包裹 的字符串是原格式输出)
char类型C#:有char类型,单引号包裹 Lua:没有
语言对比语言类型 C#:编译型 Lua:解析型 数据类型 C#:强类型 Lua:弱类型
5.特殊符号 +C#:数学意义上的相加;字符串相连 Lua:只是数学意义上的相加;字符串相连用". ."[两个点]
++与–C#:有效 Lua:无
6.常用运算符 复合赋值运算符C#:+= -= *= /= %= Lua:没有
关系运算符C#:不等于!= Lua:不等于~=
逻辑运算符C#:&& || ! Lua:and or not
7.分支结构 if语句C#:代码体部分用一个{ }进行包裹
Lua:用then和end代替{ }进行包裹
C#:if和else下方都跟着一个代码体,每个代码体都需要用{ }包裹
Lua:只有在if语句下方才会出现then,整个if代码的结尾处用end
C#:else if两个单词之间是有空格的
Lua:elseif两个单词相连且没有空格
switch…case…语句C#:有 Lua:没有
8.循环结构 for语句C#:参数之间用;分号分割
Lua:参数之间用,逗号分割
C#:代码体部分用{ }包裹
Lua:代码体部分用do和end包裹
C#:有
Lua:无,但有类似的语句; 布尔表达式不成立的时候才会继续循环
C#:有break和continue Lua:只有break 不过我们可以利用goto语句实现continue
for i=1, 3 do
if i m then
mi = i
m = val
end
end
return m, mi
end
print(maximum({8,10,23,12,5}))
以上代码执行结果为:
23 3
Lua 函数可以接受可变数目的参数,在函数参数列表中使用三点 ...
表示函数有可变的参数。
function average(...)
result = 0
local arg={...} --> arg 为一个表,局部变量
for i,v in ipairs(arg) do
result = result + v
end
print("总共传入 " .. #arg .. " 个数")
return result/#arg
end
print("平均值为",average(10,5,3,4,5,6))
代码顺序
C#:编译型语言,代码顺序无所谓 Lua:解析型语言,必须先声明,然后才可以调用
函数作为参数传递C#:使用委托实现 Lua:没有委托的概念,真的可以直接当成参数
作用域区别C#:默认是私有,变量的作用域由声明这个变量的位置决定。在哪个大括号内声明的变量,就在该大括号的范围内都有效。 全局变量声明完毕后,就算不手动初始化赋值,也是有默认值的。但是局部变量声明完毕后,如果不给它手动赋值,是无法直接使用这个变量的 Lua:默认全部是全局变量,就算是声明在函数内的变量,也是全局变量。如果想在 Lua 中声明局部变量,需要使用“local”关键字明确标示出来。变量的默认值是 nil,类似于 C#中的 null。 在方法中使用的全局变量可以在外部获取,但是如果前面没调用过该方法那么会返回nil,调用过会返回在方法中所赋的值。
PS:Lua中: 静态方法,属性,结构体用 .调用 调用实例对象的普通方法用 : function可以省略方法名传递(类似lambda)