文章目录
本文高清配图pdf下载
内容概要:本文详细介绍了aardio编程语言的基础知识,包括关键字、数据类型、数据结构、条件和循环结构等。此外,还重点讲解了aardio与Python之间的互操作方法,包括如何运行Python代码、调用Python库以及数据类型的转换。每个知识点都配有详细的代码示例。
适合人群:初学者和有一定编程基础的技术人员,特别是对aardio编程感兴趣或需要进行aardio与Python集成开发的开发者。
使用场景及目标:① 学习aardio的基本语法和常用数据结构;② 掌握aardio与Python之间的互操作技巧;③ 实践项目中涉及跨语言开发时的解决方案。
其他说明:本文不仅提供了理论知识,还通过大量实例帮助读者更好地理解和应用。建议读者跟随示例代码动手实践,以加深理解。
基本语法
关键字
语法系统保留的关键字,关键字在编辑器默认显示为蓝色。aardio全部关键字如下:
var 用于定义局部变量
def 用于定义关键字
null 用于表示空值
and not or 逻辑运算符
begin end 用于包含语句块
false true 用于表示布尔值
if else elseif 用于条件判断语句
select case 用于条件判断语句
for in 用于循环语句
while do 用于循环语句
break continue 循环中断语句
try catch 用于捕获异常
class ctor 用于创建类
function 用于创建函数
return 用于函数中返回值
namespace 用于创建或打开名字空间
import 用于引用库
with 用于打开名字空间
this 用于在类内部表示当前实例对象
owner 用于成员函数中表示调用函数的主体对象
global 用于表示全局名字空间
self 用于表示当前名字空间
数据类型
-
空
null -
boolean
true / false
逻辑非:
!
not逻辑或
!!
or
:逻辑与
&&
and
? -
number
数值
io.open()
var str = tostring(123,16) //转换为十六进制字符串
var num = tonumber(str,16) //将十六进制字符串转换为数值
io.print(
"二进制",tostring( 123,2) ,
"八进制",tostring( 123,8) ,
"十六进制",tostring( 123,16) ,
"十进制",tostring( 123 )
);
- string
三种方式都可以表示字符串
‘’
“”
注释符号:/**/ //
数据结构
arrdio没有很多数据结构,这点和Python不同,arrdio仅有的数据结构是table,复杂的用法可以不管
仅仅了解怎么用table达到数组的效果,怎么用table达到字典的效果就可以了,平时使用不要将两种效果的混合使用
table数组下标从1开始
条件结构
if else
io.open() //打开控制台
var a=1
if(b==1){
if(a==1) begin
io.print("if")
end
}
elseif(a==11){
io.print("elseif")
}
else{
io.print("else")
}
switch
与C语言中的switch不同,没有break语句
select指定一个选择器变量或表达式,case语句列举不同的值或条件值,第一个符合条件的case语句将会执行(执行第一个符合条件的case语句以后退出select语句,不会执行多个case语句)。
io.open() //打开控制台
var a = 0;
select( a ) {
case 1 {
//判断 1===a 是否为真
io.print("a==1")
//其他代码
}
case 1,9,10 {
//判断 a 是否其中的一个
io.print("a是1,9,10其中之一")
}
case 10;20 {
//判断 ( 10<=a and a <=20 ) 是否为真
io.print("a在10到20的范围")
}
case !=0{
//判断 a是否不等于0,这是自已指定关系运算符的示例
io.print("a不等于0")
}
else{
//所有条件不符时执行else语句块
io.print("a是其他值(0)")
}
}
循环结构
while
while( 条件判断语句 ) {
//需要循环执行的语句
}
io.open()
var countLoop = 0
while( countLoop<10 /*这里指定进入并重复执行循环语句的条件*/ ){
countLoop++
io.print("循环次数", countLoop);
};
execute("pause") //按任意键继续
io.close();//关闭控制台
do…while
至少会执行一次
do{
//需要循环执行的语句
} while( 条件判断语句 )
do{
io.print(countLoop)
countLoop++
}while( countLoop<123 ); //判断条件
for
步进的数值,而不是i++等,这一点注意下
for( 计数器变量= 初始数值; 最大数值; 步进数值) {
//步进可以省略,默认值为1。
//需要循环执行的语句
}
io.open();
for( i=1;10;2 ){
//计数器i从1循环到10,每次递增2
io.print(i)
}
//支持修改计数器变量
for( i=1;10;1 )begin
i++;//如果你将i赋值为非数字,在下次循环以前将会被自动恢复为计数器值
end;
//递减计数器
for( i=1;-10;-1 )begin
io.print(i)
end;
execute("pause") //按任意键继续
io.close();//关闭控制台
for…in
重点知识
名字空间
global
建立n个aardio脚本,默认这些脚本均在global名字空间,里面不带var关键字的变量,均在global名字空间下。
特别注意的一点是,内核库被导入了global名字空间如string库,其他名字空间访问string,前面需要加 … 或者 global,…string 或者 global.string
这个特点和Python很不一样,Python搜索的顺序是LEGB,在新的命名空间下,访问通用的函数,如打开文件的open,无须有…等声明。自动在当下命名空间找open,在到闭包里找,再到全局变量找,再到内建空间找,open就在内建空间里。
而aardio,仅在当前名字空间找string,如果没有找到就报错,所以解决方法有两个
- 指定string在哪,在 global空间,aardio推荐做法
- 在当前命名空间,import string,当前命名空间就有了string
import console
console.open()
a = 10 // 默认就在global空间
var a = 100 // 局部变量
console.log(a) // a 默认访问局部变量(带var 的 a),如果没有,继续访问当前名字空间的a
// 当前名字空间为global空间
console.log(global.a)
console.log(self.a) // self表示当前空间,为global空间
namespace tmp{
..console.log(self.a) // self 表示当前空间,为tmp空间
}
console.pause(true)
/*
100
10
10
*/
self
aardio用self关键字指代当前名字空间,这一点和Python不同,Python用self指代当前实例
import console;
a = 10; // 全局名字空间,这个变量为全局名字空间的成员变量
namespace test{
b