programming in lua 初读15

初学者,有错误希望指正。

15————————集
--列出在一段源代码中出现的所有标示符
function Set (list)
    local set = {}
    for _, l in ipairs(list) do set[tonumber()] = true end
    --
    return set
end
reserved = Set{"while", "end", "function", "local", }
——————————————————————————————————————————————————————————————————————
--扩展的code
#!/usr/local/bin/lua
function list_print(reserve)
   for k,v in pairs(reserve) do
          print(k)
         for m,n in pairs(reserve[k]) do
             print(m)
            print(n)
         end
   end 
end  
function Set(list)
    local first={}
    --local second={}
    --local second={true,0}
    for _,v in pairs(list) do 
     --print(type(v))
     --set={[v]=value}
     --原先的错误做法,多维表理解不清晰,这样的话会重复覆盖,是得只有最后一个输入,原先想写的是内部标签的赋值,但是这里变成了给set重复赋值
     --还是理解不清晰,以至于修改后,变成了下一种错误
     --first[v]=second
     --又一种错误做法,没想明白,但是只修改表的一个值会全部修改掉
     --[[
          修改成了下方的first[v]={[1]=true,[2]=0}
          原先把second表共享了,所以变成了一个表。多维表的前几个表是共享的,但是最后一层表必须是独立的,因为前几个表只是标签,索引
          最后一层表才是真正的赋值
     ]]
     --first[v]={[1]=true,[2]=0}
     --以上这句用下面这几句替代,会显得更为清晰
     first[v]={}
     first[v][1]=true
     first[v][2]=0
     --list_print(set)
    end
   return first
end
function count_add(list,word)
   local l=list
   l[word][2]=l[word][2]+1
   return l
end
--[[
--这是之前set错误的验真
reserve={["while"]={true,0}}
reserve={["local"]={true,0}}
--list_print(reserve)
--会只输出local的
]]
--Set{"while","end","function",}
reserve=Set{"while","end","function",}
--reserve={["while"]={[1]=true,[2]=0},["end"]={[1]=true,[2]=0},["function"]={[1]=true,[2]=0},}
--list_print(reserve)
--print(reserve["while"][1])
--reserve=first
manage=true
while(manage) do
--list_print(reserve)
  word=io.read()
--  print(type(word))
  if (word=="list") then
     list_print(reserve)
  elseif (word=="out") then
      manage=false
--      list_print(reserve)
   elseif  (reserve[word]) then
      --print(word)
     print(word.."是标识符")
      reserve=count_add(reserve,word)   
   else 
      print(word.."不是标识符")
   end
-- list_print(reserve)
end


15————————数据文件与持久化
--Entry{....}与Entry({....})等价。以一个表作为唯一参数
--使用name-value对来描述数据:
Entry{
author = "Donald E. Knuth",
title = "Literate Programming",
publisher = "CSLI",
year = 1992
}
Entry{
author = "Jon Bentley",
title = "More Programming Pearls",
publisher = "Addison-Wesley",
year = 1990
}
--使用name-value对描述的情况下,收集作者名的代码写为:
local authors = {} -- a set to collect authors
function Entry (b)
if b.author then authors[b.author] = true end
end
dofile("data")
for name in pairs(authors) do print(name) end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《LÖVE for Lua Game Programming》 开源游戏引擎love2d综合教程。 love2d 是一款备受欢迎的开源2D视频游戏引擎框架,其可以让你借助简便的 Lua 脚本语言在游戏原型开发中变得又快又简单。Love2d 拥有强大和活跃的社区来使其成为一个有效的游戏开发框架。Love2d 成就了世界上许多不同年龄段的独立游戏开发者,让他们有机会接触到商业视频游戏的机会。 Love2d的简单和“write less build more”的特点使得它在经验丰富的老人和刚入行的新人都很容易上手。 本书是一本展示 Love2D 大部分综合功能的教程。它将带领你通过创建一个原型来快速用Love2d快速打包。 本书所涵盖的内容 第一章:开始Love2d。下载,安装,Lua框架,运行 Love2d 游戏 第二章:Love2d 走起!带领你学会绘制2D对象,移动游戏对象,并赋予一个游戏角色生命。 第三章:创建游戏之前。带你了解开发一个游戏所必备的游戏知识。 第四章:创建你的第一个游戏。这章带领你设计和加载游戏关卡,并设置管理你的游戏角色和资源。 第五章:更多游戏制作。介绍你一些游戏物理如碰撞,重力对游戏对象的影响,来帮助你更好的创建角色动画。 第六章:遇见坏蛋。描述怎么创建敌人角色。 第七章:存档,UI和声音。 第八章:打包和部署你的游戏,描述怎么打包和部署你的游戏到各个平台上,现在你的游戏已经面世了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值