您当前的位置: 首页 >  c#
  • 3浏览

    0关注

    193博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

LUA和C#语法比较(强化记忆)

我寄人间雪满头丶 发布时间:2021-01-13 19:26:27 ,浏览量:3

目录
  • 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:用then和end代替{ }进行包裹 在这里插入图片描述

if…else…语句

C#:if和else下方都跟着一个代码体,每个代码体都需要用{ }包裹 在这里插入图片描述

Lua:只有在if语句下方才会出现then,整个if代码的结尾处用end 在这里插入图片描述

if…else if…语句

C#:else if两个单词之间是有空格的 在这里插入图片描述

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

switch…case…语句

C#:有 Lua:没有

8.循环结构 for语句

C#:参数之间用;分号分割 在这里插入图片描述

Lua:参数之间用,逗号分割 在这里插入图片描述

while语句

C#:代码体部分用{ }包裹 在这里插入图片描述

Lua:代码体部分用do和end包裹 在这里插入图片描述

do…while语句

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)

关注
打赏
1648518768
查看更多评论
立即登录/注册

微信扫码登录

0.2320s