lua keynote
【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的更多相关文章
- keynote 代码高亮
brew install highlight (同时会安装 Lua 和 Boost) highlight -K 18 -s Vampire -u 'utf-8' -O rtf test.html | ...
- “.Net 社区虚拟大会”(dotnetConf) 2016 Day 3 Keynote: Scott Hanselman
美国时间 6月7日--9日,为期三天的微软.NET社区虚拟大会正式在 Channel9 上召开,美国时间6.9 是第三天, Scott Hanselman 做Keynote.今天主题围绕的是.NET ...
- “.Net 社区虚拟大会”(dotnetConf) 2016 Day 2 Keynote: Miguel de Icaza
美国时间 6月7日--9日,为期三天的微软.NET社区虚拟大会正式在 Channel9 上召开,美国时间6.8 是第二天, Miguel de Icaza 做Keynote,Miguel 在波士顿Xa ...
- “.Net 社区虚拟大会”(dotnetConf) 2016 Day 1 Keynote: Scott Hunter
“.Net 社区虚拟大会”(dotnetConf) 2016 今天凌晨在Channel9 上召开,在Scott Hunter的30分钟的 Keynote上没有特别的亮点,所讲内容都是 微软“.Net社 ...
- lua执行字节码的过程介绍
前面一篇文章中介绍了lua给下面代码生成最终的字节码的整个过程,这次我们来看看lua vm执行这些字节码的过程. foo = "bar" local a, b = "a& ...
- lua 学习笔记(1)
一.lua函数赋值与函数调用 在lua中函数名也是作为一种变量出现的,即函数和所有其他值一样都是匿名的,当要使用某个函数时,需要将该函数赋值给一个变量,这样在函数块的其他地方就可以通过 ...
- 在redis中使用lua脚本让你的灵活性提高5个逼格
在redis的官网上洋洋洒洒的大概提供了200多个命令,貌似看起来很多,但是这些都是别人预先给你定义好的,但你却不能按照自己的意图进行定制, 所以是不是感觉自己还是有一种被束缚的感觉,有这个感觉就对了 ...
- 使用Nginx+Lua代理Hadoop HA
一.Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个Master组件提供服务,其中正在使用的组件称为Active,另一个作为备份称为Standby,例如HDFS的NameNo ...
- 打印Lua的Table对象
小伙伴们再也不用为打印lua的Table对象而苦恼了, 本人曾也苦恼过,哈哈 不过今天刚完成了这个东西, 以前在网上搜过打印table的脚本,但是都感觉很不理想,于是,自己造轮子了~ 打印的效果,自己 ...
随机推荐
- CopyOnWriteList-JDK1.8
CopyOnWrite,一个写时复制的技术来保证并发操作的安全,使用这种技术的前提是读大于写. 读读之间相容, 写写之间互斥, 读写操作相容. 实现方法: 在对底层数据进行写的时候,把底层数据复制一份 ...
- Java序列化对象-字符串转换
package com.test; import com.alibaba.fastjson.JSON; import org.junit.Test; import java.io.ByteArrayI ...
- putty使用秘钥对登录百度云系统全过程
使用秘钥对登录百度云系统全过程 1在百度云生成秘钥对 并且绑定要登录的IP 1)创建 2) 创建成功后,会自动下载私钥到本地 3)绑定 4)绑定完毕 2把下载到本地的私钥使用putty key gen ...
- 使用windows性能计数器监控cpu使用率
https://blog.csdn.net/yabingshi_tech/article/details/26672355 2. http://blog.51cto.com/qixue/1702557 ...
- twisted的tcp.py分析
#每个connector都有一个 Connection对象@implementer(interfaces.ITCPTransport, interfaces.ISystemHandle) class ...
- leetcode1020
class Solution(object): def __init__(self): self.cons = 0 self.S = list() def dfs(self,m,n,v,A): whi ...
- tensorflow实战系列(一)
最近开始整理一下tensorflow,准备出一个tensorflow实战系列,以飨读者. 学习一个深度学习框架,一般遵循这样的思路:数据如何读取,如如何从图片和标签数据中读出成tensorflow可以 ...
- PHP + NGINX 控制视频文件播放,并防止文件下载
最简单的方法是使用NGINX的 internal 功能 server { listen 80; server_name www.xxx.com; location / { ...
- 使用Prometheus+Grafana监控MySQL实践
一.介绍Prometheus Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采 ...
- js页面百分比缩放
<script> var docEl = document.documentElement, resizeEvt = 'orientationchange' in window ? 'or ...