Lua--初学--实现类

    科技2022-07-11  95

    1.声明:

    Demo={value1=1, value2="value2", value3=true, functiondemo =function ( ) print("Demo中的一个方法") end, }

    2.调用:注意的是lua中没有new关键字,所以这里实现的类的效果,更像是静态类

    print(Demo.value1) print(Demo.value2) print(Demo.value3) Demo.functiondemo()

    3.添加新的字段,直接在外部使用.操作符输入要添加新的字段的名字

    Demo.value4="我是value4" print(Demo.value4)

    4.添加新的方法

    ①function +functiongname的形式: function Demo.functiondemo2( ) print("Demo中的第二个方法") end Demo.functiondemo2() ②functionname=function 的形式: Demo.functiondemo3=function ( ) print("Demo中的第三个方法") end Demo.functiondemo3()

    5.处理内部参数的方法

    Demo={value1=1, value2="value2", value3=true, functiondemo =function ( ) print("Demo中的一个方法") end, functiondemo4=function ( ) print(value1) end, }

    调用functiondemo4的时候输出为nil,因为作用域的问题,而变成两个变量,所以在处理的时候,要在变量前加入限定词

    Demo={value1=1, value2="value2", value3=true, functiondemo =function ( ) print("Demo中的一个方法") end, functiondemo4=function ( ) print(value1) end, functiondemo5=function ( ) print(Demo.value1) end, }

    调用functiondemo5能输出Demo中value1的值

    当然也可以处理的方法需要一个参数,调用的时候把自己当成参数传进去

    Demo={value1=1, value2="value2", value3=true, functiondemo =function ( ) print("Demo中的一个方法") end, functiondemo4=function ( ) print(value1) end, functiondemo5=function ( ) print(Demo.value1) end, functiondemo6=function(t) print(t.value2) end, } Demo.functiondemo6(Demo)

    6.:与. 的方法调用 也可以使用:进行调用function6 Demo:functiondemo6() 也会正确的输出value2 使用:操作符调用,用作方法的调用的时候,就是把自己当作第一个参数,传进去

    7.使用:在外部声明一个方法的时候

    function Demo:functiondemo7( ) print(self.value3) end

    在外部添加方法的时候,可以用:操作符进行声明,意思是默认有一个self的变量作为方法的第一个参数,调用的时候要求传参数,或者要求使用:进行调用 调用functiondemo7:

    Demo:functiondemo7 Demo.functiondemo7(Demo)

    8.Demo:

    print("用lua的表实现类的效果") print("声明:") --类中主要的是字段/属性(存储值),方法(做处理),事件(通知其他类) Demo={value1=1, value2="value2", value3=true, functiondemo =function ( ) print("Demo中的一个方法") end, functiondemo4=function ( ) print(value1) end, functiondemo5=function ( ) print(Demo.value1) end, functiondemo6=function(t) print(t.value2) end, } print("访问以及方法的调用") --注意的是lua中没有new关键字,所以这里实现的类的效果,更像是静态类 print(Demo.value1) print(Demo.value2) print(Demo.value3) Demo.functiondemo() print("给Demo中加入新的字段") Demo.value4="我是value4" print(Demo.value4) print("给Demo中加入新的方法") function Demo.functiondemo2( ) print("Demo中的第二个方法") end Demo.functiondemo2() Demo.functiondemo3=function ( ) print("Demo中的第三个方法") end Demo.functiondemo3() print("处理内部参数的方法") Demo.functiondemo4() --打印nil,发现就算是要处理Demo内部的变量,也会因为作用域的问题,而变成两个变量,所以在处理的时候,要在变量前加入限定词 Demo.functiondemo5() --或者让方法传入一个变量,调用的时候,把自己传进去 Demo.functiondemo6(Demo) --或者使用:操作符调用,用作方法的调用的时候,就是把自己当作第一个参数,传进去 Demo:functiondemo6() --在外部添加方法的时候,可以用:操作符进行声明,意思是默认有一个self的变量作为方法的第一个参数,调用的时候要求传参数,或者要求使用:进行调用 function Demo:functiondemo7( ) print(self.value3) end --调用 Demo.functiondemo7(Demo) Demo:functiondemo7()

    9.总结: ①Lua中没有new关键字 ②处理内部的变量的时候,要注意使用的作用域,即要求把自己传进方法,或者调用的时候使用:操作符 ③:与. 在调用的时候区别, :在调用的时候,会把调用者当作第一个参数传进去 .不会把调用者当作第一个参数传进去 ④:与.在声明的时候区别 :声明的方法,会默认有一个参数self .声明的方法,不会有默认参数

    Processed: 0.053, SQL: 8