lua keynote

1、两个减号是单行注释:

--

--[[
多行注释
多行注释
--]] ---[[ // 三个'-'开启的是一个行注释
--]]

1.1、两条语句可以在同一行,并表不需要分号分隔。

a= b=a*

1.2、dofile可以在当前环境中执行一段文件代码。

2、标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)。

  最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。

  Lua 是一个区分大小写的编程语言。因此在 Lua 中 Runoob 与 runoob 是两个不同的标示符。

3、关键字

  

4、在默认情况下,变量总是认为是全局的。

  全局变量不需要声明,给一个变量赋值后即创建了这个全局变量。

  访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil。

> print(b)
nil
> b=
> print(b) >

  如果你想删除一个全局变量,只需要将变量赋值为nil。

b = nil
print(b) --> nil

5、Lua数据类型

  

  我们可以使用type函数测试给定变量或者值的类型:

print(type("Hello world"))      --> string
print(type(10.4*)) --> number
print(type(print)) --> function
print(type(type)) --> function
print(type(true)) --> boolean
print(type(nil)) --> nil
print(type(type(X))) --> string

6、boolean 类型只有两个可选值:true(真) 和 false(假),Lua 把 false 和 nil 看作是"假",其他的都为"真":

  Lua 默认只有一种 number 类型 -- double(双精度)类型。

7、字符串操作。

  字符串由一对双引号或单引号来表示。也可以用 2 个方括号 "[[]]" 来表示"一块"字符串,[[]]不会解释转义字符。

string1 = "this is string1"
string2 = 'this is string2' html = [[
<html>
<head></head>
<body>
<a href="http://www.runoob.com/">菜鸟教程</a>
</body>
</html>
]]
print(html)

  字符串连接使用的是 ..

> print("a" .. 'b')
ab
> print( .. ) >

  使用 # 来计算字符串的长度,放在字符串前面

> len = "www.runoob.com"
> print(#len) > print(#"www.runoob.com") >

  字符串替换

a="one string"
b= string.gsub(a, "one", "another")
print(a)
print(b)

  tonumber()可以将字符串转换为数字。

  tostring()将数字转换为字符串。

8、table操作。

  a["x"] 可以缩写为 a.x

-- 创建一个空的 table
local tbl1 = {} -- 直接初始表
local tbl2 = {"apple", "pear", "orange", "grape"}

  Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。  

-- table_test.lua 脚本文件
a = {}
a["key"] = "value"
key =
a[key] =
a[key] = a[key] +
for k, v in pairs(a) do
print(k .. " : " .. v)
end

  不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始。

-- table_test2.lua 脚本文件
local tbl = {"apple", "pear", "orange", "grape"}
for key, val in pairs(tbl) do
print("Key", key)
end

  #a 受限于nil。

9、function。

  在 Lua 中,函数是被看作是"第一类值(First-Class Value)",函数可以存在变量里:

function factorial1(n)
if n == then
return
else
return n * factorial1(n - )
end
end
print(factorial1())
factorial2 = factorial1
print(factorial2())

  function 可以以匿名函数(anonymous function)的方式通过参数传递:

-- function_test2.lua 脚本文件
function testFun(tab,fun)
for k ,v in pairs(tab) do
print(fun(k,v));
end
end tab={key1="val1",key2="val2"};
testFun(tab,
function(key,val)--匿名函数
return key.."="..val;
end
);

10、x^y是次方计算。

  a%b  =a-floor(a/b)*b。x%1的结果是x的小数部分,而x-x%1的结果就是其整数部分。x-x%0.01是精确到小数点后两位。

11、==用于相等测试。~=用于不等测试。

  如果两个值具有不同的类型,Lua就认为它们不相等。

  nil只与自身相等。
12、and 当第一个操作数为假时,返回第一个操作数;否则返回第二个操作数。

  or 当第一个操作数为真的,中第一个操作数;否则返回第二个操作数。

13、Lua初始化对象时,先创建对象,再赋值。所以以下代码是有效的。

list=nil
for line in io.lines() do
list = {next=list,value=line}
end

14、do-end用于定义一个程序块。

15、for的3个表达式,在循环开始前一次性求值。循环变量为for的local变量。

  pairs遍历表中全部key,value

  ipairs从下标为1开始遍历,然后下标累加1,如果某个下标元素不存在就终止遍历。这就导致如果下标不连续或者不是从1开始的表就会中断或者遍历不到元素。

16、迭代器有:io.lines、pairs、ipairs、string.gmatch。

lua keynote的更多相关文章

  1. keynote 代码高亮

    brew install highlight (同时会安装 Lua 和 Boost) highlight -K 18 -s Vampire -u 'utf-8' -O rtf test.html | ...

  2. “.Net 社区虚拟大会”(dotnetConf) 2016 Day 3 Keynote: Scott Hanselman

    美国时间 6月7日--9日,为期三天的微软.NET社区虚拟大会正式在 Channel9 上召开,美国时间6.9 是第三天, Scott Hanselman 做Keynote.今天主题围绕的是.NET ...

  3. “.Net 社区虚拟大会”(dotnetConf) 2016 Day 2 Keynote: Miguel de Icaza

    美国时间 6月7日--9日,为期三天的微软.NET社区虚拟大会正式在 Channel9 上召开,美国时间6.8 是第二天, Miguel de Icaza 做Keynote,Miguel 在波士顿Xa ...

  4. “.Net 社区虚拟大会”(dotnetConf) 2016 Day 1 Keynote: Scott Hunter

    “.Net 社区虚拟大会”(dotnetConf) 2016 今天凌晨在Channel9 上召开,在Scott Hunter的30分钟的 Keynote上没有特别的亮点,所讲内容都是 微软“.Net社 ...

  5. lua执行字节码的过程介绍

    前面一篇文章中介绍了lua给下面代码生成最终的字节码的整个过程,这次我们来看看lua vm执行这些字节码的过程. foo = "bar" local a, b = "a& ...

  6. lua 学习笔记(1)

    一.lua函数赋值与函数调用         在lua中函数名也是作为一种变量出现的,即函数和所有其他值一样都是匿名的,当要使用某个函数时,需要将该函数赋值给一个变量,这样在函数块的其他地方就可以通过 ...

  7. 在redis中使用lua脚本让你的灵活性提高5个逼格

    在redis的官网上洋洋洒洒的大概提供了200多个命令,貌似看起来很多,但是这些都是别人预先给你定义好的,但你却不能按照自己的意图进行定制, 所以是不是感觉自己还是有一种被束缚的感觉,有这个感觉就对了 ...

  8. 使用Nginx+Lua代理Hadoop HA

    一.Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个Master组件提供服务,其中正在使用的组件称为Active,另一个作为备份称为Standby,例如HDFS的NameNo ...

  9. 打印Lua的Table对象

    小伙伴们再也不用为打印lua的Table对象而苦恼了, 本人曾也苦恼过,哈哈 不过今天刚完成了这个东西, 以前在网上搜过打印table的脚本,但是都感觉很不理想,于是,自己造轮子了~ 打印的效果,自己 ...

随机推荐

  1. 0. 前言【从零开始学Spring Boot】

    [视频&交流平台] àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm ...

  2. layer.js关闭子窗口及刷新父窗口

    在需要layer.js弹窗口时,当编辑完窗口内容,需要关闭及刷新父窗口时: $("#senddata").click(function(){var id = $('input[na ...

  3. mybatis foreach 循环 list(map)

    直接上代码: 整体需求就是: 1.分页对象里面有map map里面又有数组对象 2.分页对象里面有list list里面有map map里面有数组对象. public class Page { pri ...

  4. ROS进阶学习手记 7.2 -- RViz仿真实例2:Create SmartCar

    上一节玩了 exbot 在RViz里的仿真控制,这里我们用urdf文件写个自己的小车模型,ref: http://blog.csdn.net/hcx25909/article/details/8904 ...

  5. Spring4 MVC HelloWord实例

    一.创建Web项目 我用的eclipse,创建步骤:file=>New=>Other=>Web=>Dynamic Web project,按照操作创建一个完整的Web项目,下载 ...

  6. Pig latin基础

    pig的两种运行模式,local模式,mapreduce模式 local模式下,pig只能访问本地一台:在mapreduce模式下,pig可以访问一个hadoop集群和hdfs的安装位置.这时,pig ...

  7. 4. mysql 1449 : The user specified as a definer ('test'@'%') does not exist 解决方法

    权限问题,授权 给 root  所有sql 权限 mysql> grant all privileges on *.* to test@"%" identified by & ...

  8. hive安装教程本地模式

    1.安装模式介绍: Hive官网上介绍了Hive的3种安装方式,分别对应不同的应用场景. a.内嵌模式(元数据保村在内嵌的derby种,允许一个会话链接,尝试多个会话链接时会报错) b.本地模式(本地 ...

  9. PHP中的 抽象类(abstract class)和 接口(interface)

    抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 .抽 ...

  10. 深度学习原理与框架-卷积网络细节-经典网络架构 1.AlexNet 2.VGG

    1.AlexNet是2012年最早的第一代神经网络,整个神经网络的构架是8层的网络结构.网络刚开始使用11*11获得较大的感受野,随后使用5*5和3*3做特征的提取,最后使用3个全连接层做得分值得运算 ...