Lua学习记录 — (1) 变量及数据类型
2018-01-31 17:37
337 查看
BasicSyntax.lua
VariablesAndDataTypes.lua
--#!/usr/bin/lua -- 告诉操作系统所使用lua解释器的路径(这里是Linux系统路径) -- 这里是单行注释 --[[ 这里是 多行注释 ]] --[=[ 这里是 多行注释 ]=] -- 代码块 (使用关键字) if (true) then result = "这里会输出,1" print (result) else result = "这里不会输出" print (result) end print "这里会输出,2" -- 多行语句 (直接跨行) a=5 b=6 c=a +b print (a +b) print (c)
VariablesAndDataTypes.lua
------------------------------------ 数据类型 ------------------------------------ -- nil无效值(条件表达式中相当于false) print(nil_) -- Boolean布尔值(只有false与true ) bool_ = true print(bool_) bb33 --> nil print(type(bool_) , bool_) --> boolean true -- Number数字(双精度double) number_ = 5 print(type(number_) , number_) --> number 5 -- String字符串(用一对单引号或双引号表示) string_ = "我是字符串" print(type(string_) , string_) --> string 我是字符串 -- Function函数 function function_() end print(type(function_) , function_) --> function function: 003CA1C0 -- table表(关联数组,数组的索引可以是数字或字符串) table_ = { "BeiJiaan",173,25,63.5,"man" } print(table_) --> table: 003C4620 for k,v in ipairs(table_) do print(k,v) --> 1 BeiJiaan / 2 173 / ... end table_ = { name="BeiJiaan",height=173,age=25,weight=63.5,sex="man"} print(table_) --> table: 003C4800 for k,v in pairs(table_) do print(k,v) --> name BeiJiaan / height 173 / ... end -- userdata(表示任意存储在变量中的C数据结构) -- -- thread线程(表示执行的独立线路,用于执行协同程序) -- -- 变量类型转换(lua的变量类型是动态的,不用指定类型) a = 1 print(type(a)) --> number a = "string" print(type(a)) --> string --[=[ 《补充》 1. Lua会自动在sring和numbers之间自动进行类型转换: a. 当一个字符串遇到算数操作时,string会自动转换为数字 print("1"+1) => 输出2 b. 当字符串连接数字时,数字会自动转化为string print("i am " .. 25 .. "years old;") => 输出i am 25 years old; 2. Lua是从1开始排序的(如table表),在使用pairs遍历时,会先按照数字顺序输出,再轮到键值对; 3. table表的索引有2种: value = t["key"] value = t.key 4. boolean只有两个值:true和false;Lua把false和nil看作“假”,其他都为“真”; 5. numbers只有double双精度类型; 6. string字符串可以使用一对单引号或者双引号来表示,也可以使用 [[ ]] 来表示一块字符串; 7. string字符串可以使用#号来计算字符串长度;如:#str / #"hello" 8. function可以以匿名函数的方式通过参数传递; ]=] ------------------------------------ 变量 ------------------------------------ -- 所有未创建的变量值都是nil; print(b) --> nil -- 删除变量(直接赋值nil,lua会回收其所占内存) a = nil print(a) --> nil -- 多变量赋值(多余的为nil或舍弃) a,b,c = 1,2 print(string.format("a = %d ; b = %d ; c = ",a,b),c) --> a = 1 ; b = 2 ; c = nil -- 交换变量值(利用lua赋值时先计算值再赋值的特性) a,b=b,a print(string.format("a = %d ; b = %d ;",a,b)) --> a = 2 ; b = 1 ; --[=[ 《补充》 1. nil还有一个“删除”的作用,给全局变量或者table表里的变量赋nil值,等同于把它们删掉; ]=] ------------------------------------ 变量作用域 ------------------------------------ -- 全局变量(lua中没有块级作用域) val1 = "val" if (true) then val1 = "val1" val2 = "val2" end print(val1) --> val1 print(val2) --> val2 (块中定义的,在外界一样可以访问) -- 局部变量(只有使用local声明的才是局部变量,其余块或函数里面的都是全局变量) function fun() val3 = "val3" end fun() print(val3) --> val3(调用函数后,就创建了val3变量,外部就可以访问) if (true) then local val4 = "val4" end print(val4) --> nil(local局部变量的作用域为从声明处到所在语句块结束处) -- 作用域链(local局部变量的作用域为从声明处到所在语句块结束处) val = 1 function f1() val = 2 function f2() val = 3 print(val) --> 3 end f2() end f1() print(val) --> 3 val = 1 function f1() local val = 2 function f2() val = 3 print(val) --> 3 (会变量会先向外层寻找,直到寻找到为止) end f2() print(val) --> 3 end f1() print(val) --> 1
相关文章推荐
- C#学习记录1(数据类型,变量,表达式)
- python学习记录 — (1) 变量及数据类型
- JavaScript学习记录day2-数据类型、变量
- C\C++ 程序员从零开始学习Android - 个人学习笔记(四) - java基础 - 数据类型、变量、字符串、数组
- 黑马程序员-数据类型、变量作用域和数据结构的学习笔记
- 【Objective-C学习笔记】变量和基本的数据类型
- Python学习笔记-变量和数据类型
- Java学习笔记-变量与数据类型
- Python学习笔记——变量数据类型
- PHP学习之[第03讲]PHP5.4 语法、常量、变量、数据类型详解
- Python学习第二课-Python变量、运算符、表达式、数据类型
- Python3学习笔记1-变量,数据类型
- Lua学习笔记之数据类型
- [学习笔记]Java数据类型,变量和运算符
- Lua学习--基本语法&数据类型
- Redis学习和应用记录(2)--常用数据类型及命令
- python学习笔记-2.python变量和数据类型
- objective-c学习笔记第七章《objective-c 数据类型和变量与java中的区别》
- Python学习--判断变量的数据类型
- lua学习笔记_注释、基本数据类型、if语句