博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Programing in Lua》第一部分:CH1-CH10
阅读量:4972 次
发布时间:2019-06-12

本文共 2207 字,大约阅读时间需要 7 分钟。

CH1: 开始

  • 程序块:Lua执行的每段代码,例如一个源代码文件或在交互模式输入一行代码,也就是一连串的语句或命令(理解这个概念很重要);
  • 小技巧:dofile函数在测试代码时的用处
  • Lua的标识符:
    • 可由任意字母、数字、下划线构成,不能以数字开头避免以一个下划线开头并跟着一个或多个大写字母。
    • 避免以一个下划线开头并跟着一个或多个大写字母的标识符,lua将之保留作他用。
    • 保留字符"_"(仅一个下划线)作为“亚变量”。
  • 注释:
    • --:注释单行
    • --[[  --]], 多行,建议用这种,调试代码的时候方便,只需在前一个前面再加一"-"
  • 解释器程序:
    • 概念:解释器是一个小型的程序(根据其源代码文件,可称"lua.c“),可通过它直接使用Lua。
    • 常用参数:   
      • lua -e  "print("coding direct!")"    ( 用于在命令行中直接输入代码)
      • -l : 加载库文件
      • -i : 表示在运行完其他命令行参数后进入交互模式
      • 直接在解释器中输入"=",可打印任何表达式的值,有助于将Lua作计算器使用  

 


CH2:类型与值 

  •  lua的8种基本类型:nil, boolean, number, string, userdate, function(函数), thread(线程), table
  • 函数是“第一类值(first-class value)“,可像操作其他值一样来操作函数!!
  • number类型用于表示实数(具体见luaconf.h),lua中没有整数的必要.
  • 有趣的技巧:用一对匹配的双方括号界定一个字母字符串,就像写”块注释“,例如:
  • page =[[			 An HTML page 			lua		]]

      

  • Lua提供运行时数字与字符串数字自动转换:print("1" + 1)  --> 2
  • ".." :字符串连接操作符,左右要留空
  • tonumber(), tostring()
  • "#":在字符串前放置获取该字符串长度,也可获取数组的长度
  • table是本章的关键也是lua的重点,具体研究,详见:《浅谈Lua中的table》
  • userdata(自定义类型)可将任意的c语言数据存数到lua变量中,thread(线程)具体在“协同程序”中

 


 

CH3:表达式

  • %(取模)小技巧:x%1取小数部分, x-x%0.01精确到小数点后两位
  • 对于table、userdata、函数,lua是做引用比较的,这一点也是很重要的,具体研究,详见:《关于lua中table、userdata、函数的引用的理解》
  • 两种习惯写法:
    •  x = x or v,如可用在没设置x的初值,将其设置为默认值v
    • (a and b) or c 类似于c中的 a?b:c
  • table构造式,也是重点,详见: 《浅谈Lua中的table》

 


 CH4:语句

  • Lua允许多重赋值,比较常见的应用:交换两个变量和手机函数的多个返回值
  •  局部变量与块(对局部变量及其作用域的理解也是比较重要的):
    • 语法:local
    • 作用域:仅限于生命它们的那个块
    • 交互模式中每行内容自身就形成了一个程序块(除非该航内容不足以构成一条完整的程序)
    • do-end
    • 一种习惯写法:local foo = foo,
      • 含义:创建一个局部变量foo,并用全局变量foo初始化 
      • 好处:
  1. 后续程序改变foo,对全局的foo无影响
  2. 加速当前作用域对foo的访问(局部变来那个的访问效率总是要高于全局变量)
与其他多数语言不同,lua中一个声明在循环体重的局部变量的作用域包括条件测试
for
  • 数字型for(numbereric for)
    • 语法:”for var = exp1, exp2, exp3 do <执行体> end  “   (exp3为步长,不写默认1)
  • 泛型for(generic for)
    • 标准库提供的迭代器:io.lnes, pairs, ipairs, string.gmatch等,具体研究,详见:《Lua中常用的迭代器

 


CH5:函数

CH6:深入函数

这两个章节都是讲函数的,具体研究,详见:《Lua中的函数浅谈

 


 

CH7:迭代器与泛型for     具体研究,详见:《Lua中的迭代器》

 


 

CH8:编译、执行与错误

  •  何为解释型语言:主要特征并不在于是否能编译它们,而在于编译器是否是语言运行是库的一部分,即是否有能力执行动态生成的代码。dofile等函数的存在,充分说明了Lua是一种解释型语言
  •  dofile、loadstring
  • Lua提供的所有关于动态链接的功能均聚集在一个函数,即package.loadlib, 两个参数如下
    • 动态库的完整路径:local path = "/usr/local/lib/lua/5.1/socket.so"
    • 一个函数名称:loaca f = package.loadlib(path, "luaopen_socket")
  • require
  • pcall
  • error函数
  • 用法:error("there is a error", 2); error("there is a error")
  • 说明:error的第二个附加参数level(层),用于指出应由嗲用层级中的哪个(层)函数来报告当前错误
  • xpcall

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/nepaul/archive/2011/10/15/2213506.html

你可能感兴趣的文章
springboot+mybatis报错Invalid bound statement (not found)
查看>>
Linux环境下SolrCloud集群环境搭建关键步骤
查看>>
P3565 [POI2014]HOT-Hotels
查看>>
MongoDB的简单使用
查看>>
prometheus配置
查看>>
【noip2004】虫食算——剪枝DFS
查看>>
python 多进程和多线程的区别
查看>>
sigar
查看>>
iOS7自定义statusbar和navigationbar的若干问题
查看>>
[Locked] Wiggle Sort
查看>>
deque
查看>>
c#中从string数组转换到int数组
查看>>
数据模型(LP32 ILP32 LP64 LLP64 ILP64 )
查看>>
java小技巧
查看>>
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
查看>>
toad for oracle中文显示乱码
查看>>
SQL中Group By的使用
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>