lua笔试

来源:互联网 发布:单片机入门的编程语言 编辑:程序博客网 时间:2024/06/07 22:45
1 写出这段程序的运行结果
test={1,2,3,4,5,6,7,8}
print(#test)
结果:




2 写出这段程序运行结果
a = {}
a["x"] = 10
b = a
print(b["x"]) 
b["x"] = 20
print(a["x"])


结果: 


3 请写一个带有不定参数的lua 函数 并输出所有的参数
结果: 




4   
base_type={x=0}      
base_type.__index=base_type
function base_type:new(x)
    local d={}
setmetatable(d,self)
self.x=x
return d
end
function base_type:ctor(x)  
    print("base_type ctor")
    self.x=x
end


function base_type:print_x()    
    print(self.x)
end


function base_type:hello()  
    print("hello base_type")
end


a=base_type:new(0)  
a:print_x() 
a:hello()


请写出上面在调用函数时使用':'号的优点 


结果:


5 network = {


            {name = "grame", IP = "202.26.12.32"},


            {name = "aricial", IP = "202.26.30.23"},


            {name = "lua", IP = "202.26.30.21" },


         }
写一个程序 对这个表根据名字进行排序  
参考答案:




6 写出下面程序的执行结果


Class = {x=0,y=0}
Class.__index = Class
function Class:new(x,y)


        local self = {}  


        setmetatable(self, Class)  


        self.x = x   


        self.y = y


       return self  
end


function Class:test()


    print(self.x,self.y)


end


function Class:plus()


    self.x = self.x + 1


    self.y = self.y + 1
end 




Main = {z=0}


setmetatable(Main, Class)


Main.__index = Main


function Main:new(x,y,z)


   local self = {}  
   self = Class:new(x,y) 


   setmetatable(self, Main) 


   self.z= z


   return self


end


function Main:go()


   self.x = self.x + 10


end


function Main:test()


    print(self.x,self.y,self.z)


end 


c = Main:new(20,40,100)


c:test()


d = Main:new(10,50,200)


d:go()


d:plus()


d:test()


c:test() 


运行结果:






7.写出运行结果


Class = {x=0,y=0}


Class.__index = Class


function Class:new(x,y)


        local self = {}


        setmetatable(self, Class)


        self.x = x


        self.y = y


                     return self


end


function Class:test()


    print(self.x,self.y)


end




function Class:gto()


   return 100


end




function Class:gio()


   return self:gto() * 2


end


function Class:plus()


    self.x = self.x + 1


        self.y = self.y + 1


end 


Main = {z=0}


setmetatable(Main, Class)


Main.__index = Main


function Main:new(x,y,z)


   local self = {}


   self = Class:new(x,y)


   setmetatable(self, Main)


   self.z= z


   return self


end






function Main:gto()


   return 50


end


function Main:go()


   self.x = self.x + 10


end


function Main:test()


    print(self.x,self.y,self.z)


end 


a = Class:new(10,20)


print(a:gio())


d = Main:new(10,50,200)


print(d:gio())


print(a:gio()) 


运行结果: 
0 0