aauto学习系列之<3>:基础语法1
2015-08-19 08:35
288 查看
一.常量与变量
1.变量
<1>成员变量:
属于一个名字空间的成员对象。变量的默认名字空间为global,并可以使用namespace改变代码块的名字空间。可以使用self访问当前空间,使用..操作符访问globally名字空间。
<2>局部变量:
var声明一个局部变量,作用域为当前语句块。var声明的局部变量可以指定一个初始值,也可以不指定。
2.常量:
常量名以下划线作为首字符,或使用::操作符将普通的变量转换为常量。
<1>成员常量:
<2>全局常量:
必须以”下划线+大写字母”作为起始字符
<3>转换全局常量:
可以::前缀将普通的变量强制转化为全局常量。
<4>如果常量的值是非数值对象,即不能保证每次创建的值是相同的,为避免无意中修改常量值导致异常,可使用:=操作符赋值。
二. 数据类型
1.null(空值):将一个变量赋值为null等于删除这个变量。
2.boolean(布尔值)
true表示真、false表示假。在条件表达式中,null、数值0都认为是false。
3.number(数值)
4.string(字符串)
<1>普通字符串:放在双引号中,字符串可以包含换行。字符串换行符使用’\n’表示。
2.转义字符串:
放在单引号中,支持\转义符,单引号中只能以’\r\n’表示回车换行符。
如果单引号中仅包含一个字符,并且在后面加上#号标记,表示字符的ascii值。
3.注释字符串:
可以将行注释、段注释作为一个字符串赋给一个变量。
5.table(表)
table是AAuto中唯一的数据结构类型,用来构建有序或无序的集合。、
<1>表结构:
哈希表:无序集合又称字典、哈希表等,每个元素都是一个“键值对”
数组:数组在内存中的存储是有序的。它的下标从1开始的。
<2>构造表
用{ }操作符来构造新的table对象,并以分好”;”分隔每一个元素。
可以把多个变量用一对花括号包含起来转换为table数组,也可以通过table.unpack()函数将table数组转换为多个变量。
<3>访问table成员
用元素的键作为下标查询元素的值:
对于符合变量命名规范的键名,可以使用”.”成员符访问。
<4>遍历table
遍历table列表中的全部元素:
遍历table列表中的数组元素
6.function(函数)
使用function关键字定义函数,使用()操作符调用函数
7.cdata(内核对象)
对象是由aauto管理的指针对象,由aauto自动管理cdata指向的内存,并在不需要的时候自动释放。
8.class(类)
使用class关键字定义类,类可以动态创建数据结构相同的table对象。
9.fiber(纤程)
fiber.create()创建并返回纤程对象。纤程类似线程,但不是线程。
三.转换数据类型
1.数值、字符串会自动转换,但是我们也可以用aauto提供的函数强制转换。
tostring(v)
tonumber(v)
topointer(v)
2.使用type函数可以读取数据类型。
3.使用type.eq比较数据类型。
eq=type.eq(obj1,obj2)
比较obj1、obj2的类型、元类型、struct类型,如果完全相等就返回true。
1.变量
<1>成员变量:
属于一个名字空间的成员对象。变量的默认名字空间为global,并可以使用namespace改变代码块的名字空间。可以使用self访问当前空间,使用..操作符访问globally名字空间。
name="ricky"; ..str=123;//..str等价于 ..global.str
<2>局部变量:
var声明一个局部变量,作用域为当前语句块。var声明的局部变量可以指定一个初始值,也可以不指定。
var name; name="ricky"; var a,b,c=1,2,3; io.print(a,b,c,name);
2.常量:
常量名以下划线作为首字符,或使用::操作符将普通的变量转换为常量。
<1>成员常量:
_const=123;
<2>全局常量:
必须以”下划线+大写字母”作为起始字符
<3>转换全局常量:
可以::前缀将普通的变量强制转化为全局常量。
<4>如果常量的值是非数值对象,即不能保证每次创建的值是相同的,为避免无意中修改常量值导致异常,可使用:=操作符赋值。
::Func :=function() begin end;
二. 数据类型
1.null(空值):将一个变量赋值为null等于删除这个变量。
2.boolean(布尔值)
true表示真、false表示假。在条件表达式中,null、数值0都认为是false。
3.number(数值)
4.string(字符串)
<1>普通字符串:放在双引号中,字符串可以包含换行。字符串换行符使用’\n’表示。
str1="welcome to china!"' str2="first line second line";
2.转义字符串:
放在单引号中,支持\转义符,单引号中只能以’\r\n’表示回车换行符。
str1='\tHello!';
如果单引号中仅包含一个字符,并且在后面加上#号标记,表示字符的ascii值。
'A'# 表示65
3.注释字符串:
可以将行注释、段注释作为一个字符串赋给一个变量。
str1=//this is a string str2=/* this is also string */
5.table(表)
table是AAuto中唯一的数据结构类型,用来构建有序或无序的集合。、
<1>表结构:
哈希表:无序集合又称字典、哈希表等,每个元素都是一个“键值对”
数组:数组在内存中的存储是有序的。它的下标从1开始的。
<2>构造表
用{ }操作符来构造新的table对象,并以分好”;”分隔每一个元素。
days={}; tab={x=100;"Sunday";"Monday"};//同时包括了"数组"、"字典"。
可以把多个变量用一对花括号包含起来转换为table数组,也可以通过table.unpack()函数将table数组转换为多个变量。
tab={"Ricky";"David";"Jack"}; a,b,c=table.unpack(tab);
<3>访问table成员
用元素的键作为下标查询元素的值:
tab={}; tab[1]="ricky"; tab["x"]=200;
对于符合变量命名规范的键名,可以使用”.”成员符访问。
tab["x"]=20;也可以写成tab.x=20;
<4>遍历table
遍历table列表中的全部元素:
tab={a="A";b="B";c=1;d=4}; for k,v in tab{ io.print(k,v);//k为键,v为匹配的值,在这里键、值是无序的随机出现。 }
遍历table列表中的数组元素
tab={a="A";b="B";c=1;d=4}; for i=1;#tab;1 { print(i,tab[i]); }
6.function(函数)
使用function关键字定义函数,使用()操作符调用函数
7.cdata(内核对象)
对象是由aauto管理的指针对象,由aauto自动管理cdata指向的内存,并在不需要的时候自动释放。
8.class(类)
使用class关键字定义类,类可以动态创建数据结构相同的table对象。
9.fiber(纤程)
fiber.create()创建并返回纤程对象。纤程类似线程,但不是线程。
三.转换数据类型
1.数值、字符串会自动转换,但是我们也可以用aauto提供的函数强制转换。
tostring(v)
tonumber(v)
topointer(v)
2.使用type函数可以读取数据类型。
3.使用type.eq比较数据类型。
eq=type.eq(obj1,obj2)
比较obj1、obj2的类型、元类型、struct类型,如果完全相等就返回true。
相关文章推荐
- Linux常见命令汇总
- 【思维】NOIP2012疫情控制
- 零基础学python-5.7 小数精度
- 零基础学python-5.7 小数精度
- Redis性能问题排查解决手册(七)
- tomcat环境下服务器文件句柄耗尽(Too Many Open Files)的问题排查
- android本地较大的本地数据显示,cursoradapter的使用
- Pearls
- TextView 的 XML 属性及相关方法的说明
- Pearls
- POJ 2516 Minimum Cost
- 如何实现table中,点击某行,选中某行,改变其背景色
- UI初级第六课  Tab 控制器(标签控制器)——iOS学习连载21
- 计算机视觉CV 之 CMT跟踪算法分析二
- python闭包详解+实例演示
- UI初级第五课  导航控制器——iOS学习连载20
- anroid 点击图形缩小
- 必须掌握的排序
- OC: 类的扩展、类的延展、协议、 NSDate
- UITouch触摸与手势