接下来把我所看的《Lua程序设计》中介绍lua的内容,时时的记录下来。当做一个读书笔记吧。

先说一下怎样直接运行lua文件吧,windows cmd进入相应的文件夹,然后输入lua,出现版本信息,然后dofile("a.lua"),可以运行自己创建的lua脚本。退出lua交互控制,可用os.exit()。交互模式可以通过do。。end实现代码块。

1.lua的全局变量,直接为变量赋值即可,如果没有赋值,一个变量将被认定为nil。如果想删除一个全局变量,可以直接为变量赋值,如b=nil


2.lua中的保留字,不能当做标识符。

and  break do else elseif end false for function if in local nil not or repeat return then true until while

lua大小写敏感,单行注释用--,多行注释用--[[      --]]


3.lua的8个基本类型:

nil  boolean  number  string  userdata  function  thread   table

lua可以直接测定给定变量或者值的类型。

nil:只有一个值,nil,全局变量没有被赋值之前默认为nil。为全局变量赋值nil,可以删除该变量。

boolean:lua中所有的值都可以作为条件,除了false和nil为假,其他都为真。lua中认为0和空串是真的。

number:实数,lua中没有整数,可处理任何长整数,如 2  0.2  2e-3  0.2e11  2e+20

string:lua8位字节,可以用单引号或者双引号,可以处理长字符串,1M的string也是可以处理的,很高效。lua中可以通过转义字符,对字符串进行处理。lua还可以自由的进行string、number之间的转换,如可用print("10"+1),得到结果11。

  

  

  lua中的字符串连接符是 .. ,数字之后写点点,必须加上空格。防止被解释错。

  

function:函数可以存储在变量中,可以作为函数的参数,可以作为返回值。一个程序可以重新定义函数增加新的功能,或者避免不行的代码隐藏函数。lua可以调用c或者lua实现的函数,所有标准均是c实现的。


4.支持算数运算符,二元:+-*/^,一元:-。

关系运算符:> < <= >= == ~=。不能混合比较。

逻辑运算符:nil和false为假,and、or、not,and的优先级比or高。c中的三元符a?b:c,lua中用(a and b)or c


5.优先级从高到低。运算符优先级排序。


6.表的构造。构造器是创建和初始化表的表达式。表的以第一个元素的索引为1.(并不是其他语言的0)。表中的元素可以任意的添加和删除。在构造函数的最后","是可选的,方便以后的拓展,分割符号可以用分号代替,区分不同类型的元素。


7.lua可以对多个变量同时赋值,可以实现swap,也可以通过多变量赋值得到函数的返回值。如:a,b=b,a   a[i],a[j]=a[j],a[i]    a,b=f()


8.代码块的概念:一个控制结构,函数体,或者一个chunk,都可以是一个代码块。

使用local可以创建一个局部变量,与全局变量不同,局部变量只在声明的代码块中有效。

程序中尽可能的使用局部变量,避免命名冲突,访问局部变量的速度比较快。


9.控制语句:if的格式有三种,

  if 条件 then 语句块 end;

  if 条件 then 语句块 else 语句块 end;

  if 条件 then  语句块 elseif 条件 then 语句块  else 语句块 end。

while语句:while 条件  do  语句块  end

repeat-until语句:repeat 语句块 until 条件

for语句:@1.数值for循环,for i=10,1,-1 do

            print(i)

           end

      第一个值为初始值,第二个值为结束值,第三个为step值(可以省略,默认为1)。

     

      

    @2.泛型for循环,遍历表有两种方式,一种是  in pairs(表名),一种是in ipairs(表明)。

    

    

break和return语句放在流程控制中。


10.函数 function+函数名(参数)end

当函数只有一个参数,并且这个参数是字符串或者表构造时,()可有可无。

lua函数可以有多个返回值,该返回时直接 return m,n,j

lua中调用可变参数的可变函数,可以用unpack函数,使用方法如f(unpack(a)),a为一个表

未完,待续。。

lua读书笔记的更多相关文章

  1. Programming in Lua读书笔记

         Lua的长处之一就是可以通过新类型和函数来扩展其功能.动态类型检查最大限度允许多态出现,并自动简化调用内存管理的接口,因为这样不需要关心谁来分配内存谁来释放内存,也不必担心数据溢出.高级函数 ...

  2. 《Redis设计与实现》读书笔记

    <Redis设计与实现>读书笔记 很喜欢这本书的创作过程,以开源的方式,托管到Git上进行创作: 作者通读了Redis源码,并分享了详细的带注释的源码,让学习Redis的朋友轻松不少: 阅 ...

  3. 代码的未来读书笔记&lt;二&gt;

    代码的未来读书笔记<二> 3.1语言的设计 对Ruby JavaScript Java Go 从服务端client以及静态动态这2个角度进行了对照. 这四种语言因为不同的设计方针,产生了不 ...

  4. Essential C#读书笔记

    Essential C#读书笔记 这是一个多变的时代,一次又一次的浪潮将不同的人推上了巅峰.新的人想搭上这一波,同时老的人也不想死在沙滩上.这些年新的浪潮又一次推开,历史不停地重复上演,那便是移动互联 ...

  5. 认识CLR [《CLR via C#》读书笔记]

    认识CLR [<CLR via C#>读书笔记] <CLR via C#>读书笔记 什么是CLR CLR的基本概念 通用语言运行平台(Common Language Runti ...

  6. CLR基础之一---认识CLR [《CLR via C#》读书笔记]

    <CLR via C#>读书笔记 什么是CLR CLR的基本概念 通用语言运行平台(Common Language Runtime,简称CLR)是微软为他们的.Net虚拟机所选用的名称.这 ...

  7. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  8. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  9. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

随机推荐

  1. Codeforces 429 A. Xor-tree

    下来的第一次相遇是在不翻盖的同一节点,递归可以是.... A. Xor-tree time limit per test 1 second memory limit per test 256 mega ...

  2. 最受欢迎web前端技术总结

    Web前端技术发展非常快,主流技术的进步.想想刚毕业那会用asp技术.目前,该网站已经非常少见主流应用. 后来的后来J2EE框架.然后SpringMVC声望,然而,最近的各种js框架广泛传播,Html ...

  3. 【转】Android Application 对象介绍

    What is Application Application和Activity,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application ...

  4. 数据结构队列的java实现,包括线性和链式两种方式

    实现的思路为: 采用泛型的方式,首先定义了一个Queue的接口,然后通过实现该接口实现了线性和链式的两种形式的队列: 接口代码如下: package com.peter.java.dsa.interf ...

  5. 关于wcf跨机器访问的问题

    在wcf跨机器的访问中遇到了各种无法访问的问题,本人也是在通过个人解决问题的基础上发表一下自己的经验,如果还有其他方面可能影响wcf跨机器的问题,还希望大家多多发言! 好了废话不多说了,正文如下: 1 ...

  6. Back to High School Physics - UVa10071

    欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/uva10071.html 题目描述 Pr ...

  7. WebSocket在ASP.NET MVC4中的简单实现

    WebSocket在ASP.NET MVC4中的简单实现 2013-12-21 20:48 by 小白哥哥, 810 阅读, 3 评论, 收藏, 编辑 WebSocket 规范的目标是在浏览器中实现和 ...

  8. AMQP(Advanced Message Queuing Protocol)

    一套确定的消息交换功能,也就是“高级消息交换协议模型”.AMQP模型包括一套用于路由和存储消息的功能模块,以及一套在这些模块之间交换消息的规则. 一个网络线级协议(数据传输格式),客户端应用可以通过这 ...

  9. 用Haproxy给MySQL做负载均衡

    1.安装 # wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz # tar zcvf haproxy-1.4.24.t ...

  10. duilib开源界面库

    官网: https://code.google.com/p/duilib/ 基于:http://www.viksoe.dk/code/windowless1.htm 教程: http://www.cn ...