您的位置:首页 > 其它

aauto学习系列之<3>:基础语法1

2015-08-19 08:35 288 查看
一.常量与变量

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: