20170917

来源:互联网 发布:linux python模块 编辑:程序博客网 时间:2024/06/03 17:28

1613-5 黄加勉 <2017.9.17> 连续第7天总结

A.今日任务
1.lua包
2.元表

B.具体内容

1.lua的包本质上还是一个table,table中可以包含函数,类似于c++的类的成员函数:

-- 函数包package = {}function package.getMax(map)    index = 1    for key,value in pairs(map) do        if (value > map[index])        then            index = key        end    end    return map[index]endfunction package.sort(map)    index = 1    for val = 1,#map do        index = val        for f = index,#map do            if(map[f] > map[index]) then                local temp = map[f]                map[f] = map[index]                map[index] = temp            end        end    end    return mapendfunction package.output(map)    for key,value in pairs(map) do        print(value)    endendmap = {5,1,2,8,5,3,4}map = package.sort(map)package.output(map)

2.元表用于两个对象之间的算数操作,例如两个table的相加,类似于c++的运算符重载。
元表是table拥有的一个table,其中包含了执行相应动作的函数。
当两个table相加的语句被执行时,会搜索是否其某个table包含add方法:

function addMap(map1,map2)    new_map = {}    for index = 1,#map1 do        new_map[index] = map1[index] + map2[index]    end    return new_mapendmt = {} -- 元表mt.__add = addMapmap1 = {1,2,3,4}map2 = {4,3,2,1}setmetatable(map1,mt)setmetatable(map2,mt)map3 = map1 + map2for key,value in pairs(map3) do    print(value)end

C.明日任务
1.qt tcp其他