aardio是一款专业的桌面软件开发工具。如果你是一个正在烦恼如何进行桌面软件开发的编程人员你一定不能错过aardio。该程序提供了一个web.form支持库(开源),可以轻松创建Web表单,加载网页,创建Web样式的软件界面或实现嵌入式浏览器应用程序。网页和aardio代码可以轻松地交互调用;该程序提供了迭代功能。功能是指循环值并不断接近最终目标的过程。每个值的结果始终用作下一次迭代的初始值。特定于迭代器函数的是每次调用迭代器所获得的第一个返回值的总和。将用作下一个迭代器调用的参数的键迭代结果值称为控制变量;此外,该程序还提供了一个web.layout支持库,该库封装了轻量级且快速的界面引擎HTMLayout,该引擎可以使用传统的HTML和CSS技术。更方便的实现美观的界面,并运行,响应速度极快,开发工具;该程序提供可视化开发工具,您可以通过拖放控件来更轻松地创建程序;使用内置的标准库和开放源代码加上控件,可以轻松实现控件的九宫格纹理,透明纹理,并且只需拖动并设置一个漂亮的界面即可快速创建控件;功能强大且实用,需要它的用户可以下载体验。
软件功能:
识别码
标识符是指由英文字母,数字或汉字组成的命名符号,并在编程语言中带有下划线,
通常用于标识用户或系统定义的数据或方法,例如常量名,变量名和函数名。
标识符的基本规则:
标识符由三个字符组成:英文字母,中文字符,数字和下划线“ _”。
不允许数字作为第一个字符。
当变量名称包含中文时,中文字符前不能有字母或数字。
您可以使用美元符号($)作为变量名或变量名的第一个字符。
您可以使用下划线作为变量名或常量名的第一个字符,当下划线是第一个字符时,表示常量,单个下划线表示变量。
标识符区分大小写
在运行程序的过程中,用于存储数据值及其值可以更改的对象称为变量。
变量的名称由合法的标识符表示,该标识符由字母,数字,汉字,下划线等组成。
起始字符o
f变量名称不能为数字。
量名称包含中文时,中文字符前不能有字母或数字。
您可以使用美元符号($)作为变量名或变量名的第一个字符。
您可以使用下划线作为变量名或常量名的第一个字符,当下划线是第一个字符时,表示常量,单个下划线表示变量。
应该遵循邻近性原则(接近原则):在首次使用局部变量之前定义变量,以便代码保持清晰的结构。
安装说明:
1.浏览此处,需要的用户可以单击本网站提供的下载路径下载相应的程序安装包
2.用户可以打开应用程序数据包,双击程序数据包以打开程序
3.用户可以在打开程序后开始您的开发旅程
官方介绍:
Aardio是专用于桌面软件快速开发的新一代混合编程语言,它具有轻量级的语言和灵活的动态语言的特性,并且还可以同时支持静态类型的开发,就像静态语言一样。 Aardio可以直接支持本机DLL。甚至可以使用代码语句将外部EXE进程中的函数声明为普通的aardio函数对象(本机调用支持)。 Aardio支持许多标准调用约定,例如stdcall,cdecl,thiscall,Fastcall,regparm(n)和其他调用约定。尽管aardio很小,但它支持丰富的接口,可以支持com静态和动态双重接口,并且本地支持com对象(例如VBS)。
使用说明:
1.成员变量
成员变量是属于命名空间的成员对象。
变量的默认名称空间是全局名称空间,您可以使用名称空间更改指定代码块的名称空间。
您可以使用self关键字访问当前的名称空间。使用..运算符访问全局名称空间
2.局部变量
Var声明一个局部变量,其范围是当前语句块和包含在当前语句块中的语句块。
在var语句中声明的局部变量可以指定初始值,也可以未指定。
例如:
不变
在运行程序的过程中,用于存储数据值且其值无法更改的对象称为常量。常量只能初始化一次,不能修改。
1.字面常数
指的是用文字值(例如数字值和字符串)表示数据的对象。
像123这样的值,``abc''称为文字值。之所以称它们为文字值,是因为它们的值是代码直接描述的值,没有名字可称呼他,只能用他的值来表示。
常量只能分配一次。重复分配给相同数字或字符串的常量值将被忽略,而分配不同的值将引发错误。
aardio中的常量由下划线表示为起始字符的标识符。
2.命名常数
使用合法标识符表示不可修改的数据。对象称为常量。与文字值不同,它们具有带有相似变量名称的常量名称。
常量名称下划线作为第一个字符,或使用::运算符将普通变量转换为常量。
命名常量可以理解为赋值后不能修改的变量。
2.1成员常量
用由字母,数字,汉字,下划线等组成的标识符表示,并且必须在下划线作为起始字符。
默认情况下,成员常量是在当前名称空间(自身名称空间)中创建的,以及成员变量,它们也可以引用成员常量的名称空间前缀。
成员常量的长度必须大于1且小于256个字节(单个下划线不是常量,通常在aardio中用作匿名变量的占位符)
例如:
2.2全局常数用由大写字母,数字,下划线等组成的标识符表示,并且必须以“下划线+大写字母”开头。全局常量与成员常量相似,不同之处在于全局常量必须大写并位于全局根名称空间中。实际上,使用全局对象是一个坏习惯。您应该避免使用全局对象,而应将它们放在适当的名称空间中。不必介意输入一些单词并编写一些名称空间前缀。了解全局对象会在不知不觉中增加程序的复杂性,并努力避免使用全局对象(这不涉及名称空间,而应使用更多的名称空间来组织数据),这意味着您已经成为一名经验丰富的程序员。
而且aardio中的全局常量是运行时对象,这意味着它将在发布后增加程序的容量。
将它们更改为文字常量并添加注释是一个很好的优化解决方案。 Aardio提供了相应的工具。
此优化技术用在libs \\ win \#DEFINE.aardio中(这不是一个库,它放置在库目录中只是为了让扫描常量声明到智能提示数据库中),效果如下:
2.3转换全局常数
在全局名称空间中将变量名称转换为全局常量名称-并保护常量,一旦在随后加载的代码中为其分配了非空值,就可以避免对其进行修改
全局常量必须遵守以下使用规则:1.将全局常量名称的首字母大写(以区分公共变量)。
默认情况下,Aardio定义了少量的全局常量函数名称-这些键函数都是小写的首字母,但是在aardio编辑器中以蓝色突出显示。
2.如果将变量定义为全局常量,则在为其分配了非空值之后便无法随意更改其值。
全局常量通常使用::名称:=初始值分配,这等效于使用::名称= ::名称或初始值,以避免重复初始化。
3. ::的范围根据代码的加载顺序向下,因此再次使用时可以忽略同一文件中定义的全局常量名称:::前缀,但由于代码文件的加载是不确定的-在其他文件中首次使用常量名称时,仍应使用::定义一次。
下图显示了win库定义的全局常量:
3.使用初始化赋值语句定义常量
常量只能初始化一次。对于数字常量,将自动忽略重复分配给相同的值。
如果常量的值是非数字对象,则不能保证每次创建的值都相同。为避免无意中修改常数值而导致异常,可以使用==运算符分配该值。
例如:
上面的代码等效于
动态指针不是新的类型,它们具有与普通指针相同的数据类型。 raw.realloc()函数可用于分配和释放动态指针,而raw.realloc()可用于再次调整指针分配的内存。动态指针的大小和地址是可变的。调整大小后,指针变量应更新为返回的新指针。
动态指针可以用作普通指针,但是当您将动态指针传递到raw.realloc()raw.concat()raw.sizeof()以及其他可以识别此类指针的函数中时,
Aardio可以获取标头信息(用于记录内存的大小,存储的数据的大小),动态指针将在返回给用户的指针地址前面倒退8个字节,以记录内存和数据的长度信息两个32位字段,然后始终移回8个字节以将可用的指针地址返回给用户,并始终在内存末尾保留2个字节以将0设置为兼容的C样式字符串,
这种指针也可以用于API函数以及其他可以像普通指针一样使用指针的地方。您可以使用raw.sizeof()获取此指向内存的指针的大小,并且可以使用raw.concat()函数来向此类指针添加内存。
与缓冲区不同,如果您不指定初始化值,则raw.realloc不会为分配的内存设置初始化值,并且aardio不负责自动释放动态指针分配的内存,显式调用raw.realloc(0 (动态指针)释放动态指针。
使用raw.buffer()函数将指针分配给可读和可写的内存。缓冲区可用作aardio中的字符串之类的字节数组。您可以使用#运算符来获取长度,使用[]下标运算符来获取Byte值,字符串是一个恒定的字节值,是只读的,但是缓冲区的字节值不仅是可读的,而且是可写的,缓冲区可以在许多字符串函数中用作字符串,在API函数中可以用作指针。
与动态指针不同,即使您不指定初始值,ardeio仍会将所有字节初始化为0,并且您也不能动态调整缓冲区的大小。您无需手动释放缓冲区分配的内存。它只能由aardio自动恢复。
计算机用八个二进制位表示八个八位位组,这称为单字节字符。
一组连续的字节构成一个字符串。在aardio中,字符串是二进制的,可以包含任何数据(例如图像,文本或不可打印的字符,例如'\ 0')。
字符串本质上是一个字节数组,但是此数组是只读的。每次替换或连接字符串时,都会生成一个新字符串。
每个字符串指向的内存都不应该直接修改。
以下代码定义了最基本的字符串:
您可以使用#str来获取字符串占用的内存字节的长度。 您可以使用下标获取每个字节的值。 例如,str [1]将第一个字节的值设为67,而内存中的67在文本中。 显示的字符是字符“ C”-由ASCII编码指定。
如前所述,一个字节只有8个二进制位,因此他可以表示的字符非常有限,因此有许多不同的编码规则使用多个字节来表示更多的字符,例如GBK,UTF-8对于多字节字符 集,使用小于0x
一个单字节的80表示ASCII字符(英文字母数字),GBK使用双字节表示中文字符(第一个字符大于0x80),UTF8的两个以上字节表示宽字符(所有字节均大于0x7F)。编码的第二个字节仍然会与ASCII冲突,
因此,需要从一开始就检测GBK字符串,以准确地检测谁属于一个字节,这导致了字符串代码的问题。 UTF8的宽字符始终大于0x7F,第一个字符的两个二进制位始终为1,附加字节的前两个二进制位始终为10,这使我们非常方便地处理文本,因为格式化的文本(例如HTML,JSON和其他定界符)通常是小于0x7F的固定ASCII字符,但要注意UTF8字符,它是可变长度的,理论上一个字符可以是1、2、3、4 ...字节。
不同的编码在不同的系统环境中也存在不兼容的问题。例如,GBK软件在传统系统上会出现乱码,而Unicode编码可以
为避免此问题,存在多种Unicode编码方案,主要方案为UTF-8和UTF-16。 Windows系统使用UTF-16,
从aardio 10开始,默认情况下aardio的源代码文件,字符串等使用UTF-8编码。
请注意,在aardio文档中,通常会提到Unicode指的是UTF 16。
例如,string.formUnicode()string.toUnicode()函数默认为从UTF-8到UTF-16(Unicode)的双向转换。
1.文字字串
文本字符串用双引号引起来。该字符串可以包含换行符。 Aardio保证双引号中的字符串引号使用'\ n'换行符,并且不包含'\ r'回车符。
例如:
如果双引号中的字符串本身包含双引号,则可以使用两个连续的双引号来表示双引号本身。此外,在aardio 10中,您可以使用反引号(键盘左上角ESC下方的键)代替双引号。它们的功能与用法相同。
例如:
双引号和反引号中的Aardio代码是纯文本字符串,并由aardio标记为UTF-8编码。
aardio中的每个字符串都有一个UTF格式标签,您可以使用string.getUtf(),string.setUtf()函数来获取或修改UTF标签。
UTF标志逐位设置,utf&8表示UTF8编码的字符串,utf&16表示UTF16编码的Unicode字符串。
而且UTF&1代表ANSI字符串,用户一般不应在编写程序中获取或修改UTF标记,格式标记应由aardio自动维护,以优化自动编码转换的效率。
用户应清楚地了解文本的源编码,并在必要时使用string.fromto()和其他转换函数执行编码转换。
Aardio仅在可以确认字符串的编码格式时才标记该字符串(例如:直接在aardio源代码中编写的字符串文字,或通过string.from成功地将编码后的字符串转换为函数)。
二,转义字符串
转义的字符串放在单引号中。支持\转义字符,语法与C \ C ++相同。
aardio中双引号中的字符不能使用转义符,这与C语言不同。
单引号中的字符串可以用换行符编写,但是aardio将忽略所有换行符,
Aardio保证只有单引号可以使用“ \ r \ n”表示回车符和换行符,所有文字回车符和换行符都将被忽略。
转义字符串支持类似于C,JS等的转义字符:
转义符说明
\\表示普通\字符
\ Ddd使用一到三位数字形成一个十进制值来表示一个字符,
如果该值以数字0开头,它将使用八进制表示一个字符,
如果您只想指出'\ 0'之后还有其他不相关的数字,
您可以在\ 0之后添加换行符,例如str ='\ 0 86'
\ XAA代表一个字符,该字符在x之后有两个十六进制
\ UAAAA代表一个Unicode或双字节字符,在u之后有四个十六进制数字,
请注意,默认情况下,普通字符串将被解析为UTF-8编码的多字节字符,
并在Unicode字符串中解析为UTF-16编码的双字节字符。
\响铃符号(通常用于打印功能以发出警告响铃,例如io.print('\ a')
\ B退格\ f换页\ r输入\ n换行
\ R \ n回车和换行\ t制表符(水平制表符)
\ V匹配垂直制表符。等效于\ x0b \“双引号\'单引号
\ [方括号[\]方括号]
转义的字符串可用于换行,但aardio会忽略换行。您必须将\ n用于换行符,并将\ r \ n用于回车符。
如果单引号仅包含一个字符,后跟#号后缀,则表示该字符的字节码值。
例:
请注意,在转义字符串的末尾之后,将添加#符号以指示字节码,并添加U或u以指示Unicode字符串(UTF16编码),例如:
使用下标获取字节或字符时的Unicode字符串(UTF16编码),例如,返回值为双字节
3.包含字符串
包含字符串用于将文件直接嵌入到aardio代码中,并将其作为二进制字符串加载。例如:
编译并发布aardio程序后,该文件将直接编译为aardio代码,并且可以在没有原始文件的情况下运行。
四,注释字符串
在aardio的赋值语句中,行注释和段注释可以用作字符串以形成赋值语句。
因为aardio注定要自定义注释标记中的星号数-只要头和尾匹配,它就可以用来表示复杂的字符串。
无需担心所包含字符串中字符串的可能结尾。
注释字符串的功能类似于双引号,这意味着它是纯文本字符串。经过aardio解析后,它将被标记为UTF8编码。
但是,该段注释保证换行符被解释为\ r \ n',并忽略星号之前和之后的第一行空白行(如果有),并且该行注释保证该字符串没有回车符( '\ r')换行符('\ n')
附:字符串导航图
回车和换行
在计算机出现之前,有一种叫做Teletype Model 33的东西,可以每秒输入10个字符。但是,它有一个问题,就是它需要0.2秒才能完成换行和换行,并且可以准确键入两个字符。
如果在此0.2秒内有一个新字符,则该字符将丢失。因此,开发人员想到了一种解决此问题的方法,即在每行的末尾添加两个字符以指示结束。一种叫做“回车”,它告诉打字机将打印头放在左边界。另一种叫做“换行”,它告诉打字机将纸张向下移动一行。从它们的英文名称可以看出,这就是“换行”和“回车”的起源。
后来发明了计算机,并将这两个概念转移到计算机上。当时,内存非常昂贵,有些科学家认为在每行末尾添加两个字符太浪费了,而添加一个字符就足够了。结果,出现了差异。
在Unix系统上,每行的末尾只有“ <换行>”,即“ \ n”;
在Windows系统中,每行的末尾是“
在Mac系统中,每行以“
在aardio中,您可以使用string.crlf()函数来格式化并将其行为更改为统一样式。
一个直接的后果是,如果在Windows中打开Unix / Mac系统下的文件,则所有文本将变成一行;
如果在Unix / Mac下在Windows中打开文件,则每行末尾可能会有一个额外的^ M符号
0x0D(asc代码为13)引用用aardio编写的“回车”,因为“ \ r”是将光标置于行的开头
0x0A(asc代码为10)是指用aardio编写的“换行”,因为“ \ n”是将光标置于下一行的同一列中
0x0D + 0x0A回车和换行Aardio被写为'\ r \ n'将光标放在下一行的开头
文字模式
在Windows中,默认值是使用'\ r \ n'表示文本换行符。将'\ n'转换为'\ r \ n'
使用io.open函数时,可以使用'b'标签指定二进制模式,并使用't'标签指定文本模式(默认设置),
设置Winform程序时,应注意,普通文本框控件使用'\ r \ n'换行,而richedit控件使用'\ n'换行。
在字符串中,表示回车和换行
Aardio有很多表示字符串的方法,
这些表示方法具有预定义的回车和换行分析规则。
这些规则将不受源文件中实际使用的换行符的影响,也就是说,是否对换行符使用'\ r','\ n'或'\ r \ n'。
Aardio将根据以下规则解析回车和换行:
字符串表示
d由赋值语句中的段落注释保证可以更改为'\ r \ n'
桌子(桌子)
表是aardio中唯一的数据结构类型,用于构建有序或无序集合。
1.表结构
一个表可以包含以下两种数据:
A),哈希表
无序集合也称为字典,哈希表,映射,关联存储器和关联数组。每个元素都是一个“键-值对(键:值对)”。 “键”可以是字符或非null的其他数据类型,甚至可以在table元素中包含一个表,从而可以嵌套。
通常将“键”放在索引运算符“ []”中以索引元素的值,这时键也称为“下标”或“索引”。例如,选项卡[“ key”]选项卡[1];您还可以在成员运算符“。”之后放置一个符合变量命名规则的键,例如tab.key tab.key2;。
B),数组
在表中,按数字索引从1开始存储的元素构成一个数组。数组在内存中的存储是有序的。
如果表中的某些元素使用数字键,但未包含在从1开始的顺序数字索引中,则会形成稀疏数组。
aardio中的数组是指有序的连续数组。
2.结构表
使用{}运算符构造一个新的表对象,并用分号分隔每个元素; (您不能使用逗号而不是分号)。
如果成员是一个函数并以}或end结尾,则可以省略分隔符。
{}运算符只能用作右值,函数参数,或包含在表达式的另一个表构造函数中。不允许与其他运算符组合,也不允许向前和向后组合。只允许将其括在方括号{} []()中。
创建一个空表。
天数= {}
创建一个表数组。
天= {“周日”; “星期一”; “星期二”; “星期三”; “星期四”; “星期五”; “星期六”}
//天[]的内容为“星期日”。天[2]的内容为“星期一” ......
table元素可以使用各种数据类型的变量,甚至可以是表达式或函数。如果我们为表中的值分配键名,则将键值对添加到表字典中。
点= {x = 100; y = 200}
//Point.x的值为100; point.y值为200
可以在表中同时包含“数组”和“字典”。
Tab = {x = 100; y = 200; “星期日”; “星期一”}
// tab.x的值为100; tab.y的值是200
表的键名不需要符合变量命名规则,键可以是null以外的任何值或字符串。
但是{}构造函数中的键名必须符合变量命名规则。
随时在桌子上
必须通过[]运算符访问变量命名规则中的键,以下是正确的编写方式:
Tab = {[1] = 300; [2] = 400; [“ +”] = 200; [1 +1] = 200}; //因为变量名不能以数字开头,所以它们不能包含运算符。
以上相当于
Tab = {};
Tab [1] = 300;
标签[2] = 400;
Tab [“ +”] = 200;
Tab [1 +1] = 200;
我们可以用大括号将多个变量括起来以转换为表数组,或者可以通过table.unpack函数将表数组转换为多个变量。
Tab = {“ a”; “ abc”; “A B C D”}; //创建一个表;
A,b,c = table.unpack(tab);
Tab = {table.unpack(tab)}; //将所有返回值转换为表变量
3.在函数参数中构造一个表
如果在函数内部仅使用{}构造函数构建了一个表参数,并且其中不包含数组元素,则可以忽略{}。
软件特色:
新的混合编程语言创建了一种新的编程方式,并且由于此语言功能,ardio可以轻松地嵌入各种第三方语言中。目前,ardio可嵌入到汇编机器代码,C语言,Java,PHP,C#,大量第三方编程语言(如Python,Javascript,VBScript等)中,方便的互调功能以及这些调用第三方语言的功能模块是使用aardio(开源)实现的。
Aardio可以一键式将硬盘目录和硬盘文件嵌入EXE文件,并且所有程序都包含所有资源以生成独立的绿色EXE文件。 aardio制作的大多数程序都不需要安装程序或发布DLL运行时库。安装绿色软件。
Aardio支持多线程开发,复杂的多线程开发在aardio中变得非常简单,标准库还提供了大量辅助支持库,简化了多线程开发,这给多线程软件开发带来了极大的便利(请参阅转到aardio示例->多线程)。
Aardio的标准库基本上是使用纯aardio源代码和所有开放源代码实现的。标准库提供了大量常用功能以简化编程。它涉及软件开发的各个方面,并大大简化了桌面软件开发过程。