目录

  • 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:


1.HelloWorld

函数关系

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 匹配出字符串中一样的格式存入table中 lua 字符串比较_脚本语言

Lua:用then和end代替{ }进行包裹

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_c#_02

if…else…语句

C#:if和else下方都跟着一个代码体,每个代码体都需要用{ }包裹

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_unity_03

Lua:只有在if语句下方才会出现then,整个if代码的结尾处用end

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_lua_04

if…else if…语句

C#:else if两个单词之间是有空格的

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_unity_05

Lua:elseif两个单词相连且没有空格

switch…case…语句

C#:有
Lua:没有

8.循环结构

for语句

C#:参数之间用;分号分割

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_unity_06

Lua:参数之间用,逗号分割

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_lua_07

while语句

C#:代码体部分用{ }包裹

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_游戏开发_08

Lua:代码体部分用do和end包裹

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_unity_09

do…while语句

C#:有

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_脚本语言_10

Lua:无,但有类似的语句;

布尔表达式不成立的时候才会继续循环

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_unity_11

关键字

C#:有break和continue
Lua:只有break
不过我们可以利用goto语句实现continue

for i=1, 3 do
    if i <= 2 then
        print(i, "yes continue")
        goto continue
    end
    print(i, " no continue")
    ::continue::
    print([[i'm end]])
end
--[[
输出结果:
1   yes continue
i'm end
2   yes continue
i'm end
3    no continue
i'm end
--]]

9.数组

基础概念

长度
Lua:长度不固定,可以给后续的索引位置继续赋值
下标
C#:从0开始
Lua:从1开始
类型
C#:只能存储一种类型的数据
Lua:可以存储多种类型的数据

代码格式

声明数组

C#:

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_unity_12

Lua:

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_unity_13

数组长度

C#:数组本身的属性

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_c#_14

Lua:使用table.getn(table名)或者使用#table(只能用于数组或者key值连续的table)

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_c#_15

遍历数组

C#:for循环遍历数组

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_unity_16

Lua:for循环遍历数组

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_unity_17

10.函数

语法格式

C#:

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_游戏开发_18

Lua:

lua 匹配出字符串中一样的格式存入table中 lua 字符串比较_c#_19

Lua函数可以随意传参数,比如需要2个参数的方法你可以传3个参数但是只会用到前2个,传1个的话第2个参数默认为空。

允许多返回值,如
s, e = string.find("www.runoob.com", "runoob")

function maximum (a)
    local mi = 1             -- 最大值索引
    local m = a[mi]          -- 最大值
    for i,val in ipairs(a) do
       if val > 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)