您当前的位置: 首页 >  我寄人间雪满头丶 c#

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)

关注
打赏
查看更多评论
  • 3浏览

    0关注

    134博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录