lua学习笔记
2014-11-01 22:01
323 查看
最近想搞torch,发现是lua写的。
lua是嘛玩意?学学看。
以下内容参考http://www.lua.org/start.html
(1)到官网,先装上再说。
curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz 也可以在浏览器直接输入http://www.lua.org/ftp/lua-5.2.3.tar.gz
tar zxf lua-5.2.3.tar.gz
cd lua-5.2.3
make linux test
For Mac OS X, use
以下内容参考http://www.dcc.ufrj.br/~fabiom/lua/01GettingStarted.pdf
(2)hello world
在控制台:
lua
io.write("hello world\n")
在文件:
vi defs.lua
dofile("defs.lua")
print(fact(6))
(3)函数
通过命名空间区分函数
print和dofile都是builld-in函数
math函数,pi、sin、sqrt、random
日期os.date()
调用(运行)脚本dofile
(4)变量
默认变量是全局的,默认值nil
变量无需变量,只需赋值然后使用
(5)注释
--我是单行注释
--[[
我们是多行注释
--]]
以下内容参考http://www.dcc.ufrj.br/~fabiom/lua/04Functions.pdf
(6)函数
local function
multiple result
具体的使用方法,参考原博客。挺巧妙的
以下内容参考http://www.dcc.ufrj.br/~fabiom/lua/05DataStructures.pdf
(7)数据结构
table代表一切
>tab={}
>tab["x"]=5
>print(tab["x"])
5
arrays是下标从1开始的连续的integer值
local a={}
for i=1,6 do
a[i]=math.random(10)
end
数组长度
#a
添加:a[#a+1]=math.random(10)
删除:a[#a]=nil
插入、删除、排序
> a = { 1, 2, 3, 4, 5 }
> table.insert(a, 3, 10) -- insert 10 in position 3
> print_array(a)
{ 1, 2, 10, 3, 4, 5 }
> table.remove(a, 4) -- remove fourth element
> print_array(a)
{ 1, 2, 10, 4, 5 }
> a = { "Python", "Lua", "C", "JavaScript", "Java", "Lisp" }
> table.sort(a)
> print_array(a)
{ C, Java, JavaScript, Lisp, Lua, Python }
连接concatenatation
table.concat将string类型的数组连接到一起。
分隔符可选,默认""
使用ipairs迭代
矩阵matrices
Records(数据结构?)
table,keys是合法的标识符。table中,record的字段可以是key/value对
集合sets
table,keys是集合的元素,value是true。通过索引删除和添加元素
使用ipairs迭代
(8)复习一下上面的数据结构
(9)敲代码费劲?用IDE?
看这里http://www.eclipse.org/ldt/#installation。
In your Eclipse 4.3+ go to Help > Install New Software...
Add the following repository: http://download.eclipse.org/ldt/releases/milestones/
Now you can install the Lua Development Tools.
效果如下:
(9)保存table到文件
(10)从文件加载double数据
这个整死我了,感觉花了一辈子时间
0.278285 -5.63E-4 0.156217 0.365401 -0.196637 2.75E-4 1.0 0.0
lua是嘛玩意?学学看。
以下内容参考http://www.lua.org/start.html
(1)到官网,先装上再说。
curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz 也可以在浏览器直接输入http://www.lua.org/ftp/lua-5.2.3.tar.gz
tar zxf lua-5.2.3.tar.gz
cd lua-5.2.3
make linux test
For Mac OS X, use
make macosx test.
以下内容参考http://www.dcc.ufrj.br/~fabiom/lua/01GettingStarted.pdf
(2)hello world
在控制台:
lua
io.write("hello world\n")
在文件:
vi defs.lua
function fact(n) if n < 2 then return 1 else return n * fact(n - 1) end endlua
dofile("defs.lua")
print(fact(6))
(3)函数
通过命名空间区分函数
print和dofile都是builld-in函数
math函数,pi、sin、sqrt、random
日期os.date()
调用(运行)脚本dofile
(4)变量
默认变量是全局的,默认值nil
变量无需变量,只需赋值然后使用
(5)注释
--我是单行注释
--[[
我们是多行注释
--]]
以下内容参考http://www.dcc.ufrj.br/~fabiom/lua/04Functions.pdf
(6)函数
local function
local function max(a,b) return (a>b) and a or b end
multiple result
> s, e = string.find("hello Lua users", "Lua") > print(s, e) 7 9
具体的使用方法,参考原博客。挺巧妙的
以下内容参考http://www.dcc.ufrj.br/~fabiom/lua/05DataStructures.pdf
(7)数据结构
table代表一切
>tab={}
>tab["x"]=5
>print(tab["x"])
5
arrays是下标从1开始的连续的integer值
local a={}
for i=1,6 do
a[i]=math.random(10)
end
数组长度
#a
添加:a[#a+1]=math.random(10)
删除:a[#a]=nil
插入、删除、排序
> a = { 1, 2, 3, 4, 5 }
> table.insert(a, 3, 10) -- insert 10 in position 3
> print_array(a)
{ 1, 2, 10, 3, 4, 5 }
> table.remove(a, 4) -- remove fourth element
> print_array(a)
{ 1, 2, 10, 4, 5 }
> a = { "Python", "Lua", "C", "JavaScript", "Java", "Lisp" }
> table.sort(a)
> print_array(a)
{ C, Java, JavaScript, Lisp, Lua, Python }
连接concatenatation
table.concat将string类型的数组连接到一起。
分隔符可选,默认""
function print_array(a) print("{" .. table.concat(a, ", ") .. "}") end习惯将string数组存为buffer,使用table.contact方法从buffer中获取单独的string
使用ipairs迭代
local a = { 1, 3, 5, 7, 9 } local sum = 0 for i, x in ipairs(a) do print("adding element " .. i) sum = sum + x end print("the sum is " .. sum)
矩阵matrices
local mt = {} for i = 1, 3 do mt[i] = {} for j = 1, 5 do mt[i][j] = 0 end end
Records(数据结构?)
table,keys是合法的标识符。table中,record的字段可以是key/value对
point1 = { x = 10, y = 20 } point2 = { x = 50, y = 5 } line = { from = point1, to = point2, color = "blue" } line.color = "red" -- same as line["color"] = "red" print(line.from.x, line["color"])
集合sets
table,keys是集合的元素,value是true。通过索引删除和添加元素
-- a set of four random integers from 1 to 10 local set = { [math.random(10)] = true, [math.random(10)] = true, [math.random(10)] = true, [math.random(10)] = true }
使用ipairs迭代
local tab = { x = 5, y = 3, 10, "foo" } for k, v in pairs(tab) do print(tostring(k) .. " = " .. tostring(v)) endpairs不是有序迭代,可用于set等;array须使用ipairs迭代
(8)复习一下上面的数据结构
>sunday = "monday"; monday = "sunday" >t = { sunday = "monday", [sunday] = monday } >print(t.sunday, t[sunday], t[t.sunday]) monday sunday sunday分析过程:
(9)敲代码费劲?用IDE?
看这里http://www.eclipse.org/ldt/#installation。
In your Eclipse 4.3+ go to Help > Install New Software...
Add the following repository: http://download.eclipse.org/ldt/releases/milestones/
Now you can install the Lua Development Tools.
效果如下:
local function main() io.write("hello, lua") t = {} s = "from=world, to=Lua" for k, v in string.gmatch(s, "(%w+)=(%w+)") do t[k] = v print(v) end a={} i=0 s=" 1 2 3 -9 5" for w in string.gmatch(s, "%d+") do print(w) a[i]=w i=i+1 end print(a) end main()
(9)保存table到文件
function TableToString(t) local r="" for k,v in pairs(t) do r=r.." "..v --空格分隔 end return r end file = io.open("z_result.txt","w") a={1,2,-3,"3"} file:write(TableToString(a)) file:close()1 2 -3 3
(10)从文件加载double数据
这个整死我了,感觉花了一辈子时间
function analys(line) for w in string.gmatch(line,"[^%s]+") do print(w.." "..tonumber(w).." ") end end function main() a = os.clock() file = io.open(filename,"r") for line in file:lines() do analys(line) end file.close() b = os.clock() print ("time: "..(b-a).."s") end main()数据格式示例:
0.278285 -5.63E-4 0.156217 0.365401 -0.196637 2.75E-4 1.0 0.0
相关文章推荐
- LUA学习笔记2-Iterators and the Generic for
- [LUA学习笔记01]用VS2003(C++)编译Hello Lua程序
- Lua入门系列----pil学习笔记之Type and Values (2)
- Lua入门系列----pil学习笔记之Getting Start
- Lua入门系列----pil学习笔记之Type and Values (2)
- Lua入门系列----pil学习笔记之 Type and Values (1)
- Lua入门系列----pil学习笔记之Getting Start
- LUA学习笔记(1)
- Lua入门系列----pil学习笔记之Getting Start
- Lua学习笔记四--返回值和UserData
- LUA学习笔记1-Functions
- Lua学习笔记之 Type and Values
- LUA学习笔记3 - Compilation, Execution, and Errors
- Lua学习笔记五--真正的入门:编写Lua扩展库
- Lua学习笔记一
- [LUA学习笔记03]LUA函数和C函数的相互调用
- Lua 学习笔记之 function、closure和upvalue
- Lua入门系列----pil学习笔记之Type and Values (2)
- Lua入门系列----pil学习笔记之Type and Values (2)
- Lua入门系列----pil学习笔记之Getting Start