aardio教程一) 基础语法-下

这篇具有很好参考价值的文章主要介绍了aardio教程一) 基础语法-下。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

条件判断语句

使用ifelseifelse来对变量或表达式进行判断

io.open() //打开控制台

var a=1

if(a==1){
    io.print("if")
}
elseif(a==11){
    io.print("elseif")
}
else{
    io.print("else")
}

也可以使用select对变量或表达式进行判断,也就是JavaScript中的switch语句,有一点不同的是,无需每个case都写一个break。

io.open() //打开控制台

var a = 1;

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 "a"{ // 也可以判断字符串相等
        io.print("a等于'a'")
    }
    case !=0{ //判断 a是否不等于0,这是自已指定关系运算符的示例
        io.print("a不等于0")
    }
    else{ //所有条件不符时执行else语句块
        io.print("a是其他值(0)")
    }
}

循环语句

aardio中的循环有whilefordo whilefor in,而while又有两种语法

第一种(和其他语言语法一样):

while(表达式){
    
}

第二种(和其他语言for语法类似,不一样的是条件判断语句在第三个语句里):

while( var 初始化循环变量列表;判断条件前执行语句;条件判断语句 ) { 
  //需要循环执行的语句
}

do while和其他语言是一样的

do{ 
  //需要循环执行的语句
} while( 条件判断语句 )

for循环则有点像Python中的for in range

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();//关闭控制台

循环中断语句

breakcontinue两个语句,语法和其他语言中的基本一样。

aardio中还增加了一个标号,来指定在嵌套循环中中断哪一层循环,比如break 1表示中断当前循环,break 2表示中断上一层循环,你也可以在循环开始时指定一个标号(例子如下)。continue也是类似语法

这个额外的语法只需要做了解即可,实际我也没用到过,可能是写其他语言已经习惯了,也会避免写多层循环。

io.open(); //打开控制台 
 
while( true ){ 循环体2: //可以在循环体的开始指定一个标号 
	io.print("循环体2开始" );
	
 
	while( true )begin 
	 	io.print("循环体1开始" );
	 	
		break 2;//中断上层循环
		break 循环体2; //这句的作用与上面的break作用是一样的
		
		io.print("循环体1结束" );
		
	end; 
	
	io.print("循环体2结束" );
}

execute("pause") //按任意键继续
io.close();//关闭控制台

异常捕获

try catch,一般很少会用到,要想程序够健壮,需要做很多次判断。如果用try来捕获所有语句,虽然程序不报错了,但还是没有正常执行。

有个特殊的情况需要使用,有时候用一些多线程库的时候,即使某个线程报错了,程序确没有任何提示,控制台也不会打印异常,这个时候就需要用try来看看是线程里的哪个语句出错了

io.open(); //打开控制台窗口

try{
    b="aaaaaaaaaaaa" *2
    io.print("错误会中断try语句块")
}
catch(e){ //catch部分可以省略
    io.print( "错误信息:",e )
    //在这里可以调用debug库
    //在栈释放以前调用错误处理
    //所以可以调用debug库中的函数收集错误相关的信息
}

io.print("错误不会中断程序")

函数

定义函数

function f1(a, b){
    io.print(a, b);
}
// 将一个匿名函数赋值给了一个变量
f2 = function(a, b){
    io.print(a, b);
}

成员函数

成员函数和普通函数基本一样,只是可以通过owner访问成员变量

tab = {};
tab.函数名字 = function( 形参列表 ) {
    //函数内部内码
}

tab = {x=1};
function tab.函数名字( 形参列表 ) {
    //函数内部内码
    io.print(owner.x);
}

可变参数

function f1(...){
    var kwargs = {...};
    console.dump(kwargs)
}
f1(1, 2, 3);
f1(1, 2);

关键词参数

aardio并不支持关键词参数,只能通过传整个表当参数

function f1(kwargs){
    console.dump(kwargs);
}
f1({a=1;b="2"});
// 大括号也可以省略
f1(a=1;b="2");

返回值

函数可以返回多个值,接收的时候可以定义多个变量来接收,例如:var a,b = f();

当函数有很多个返回值时,你这个时候又只需要其中几个,则可以使用rget来获取区间内的返回值
例如:

//打开控制台
io.open()

//定义一个函数 
func = function(){ 
    return 1,2,3; //函数有多个返回值 
}
   
var re,re2 = rget(2,func() ) //从第二个参数开始返回, re==2,re2==3
io.print( re,re2 ) 

var re,re2 = rget(-1,func() ) //从倒数第一个参数开始返回, re==3,re2==null
io.print( re,re2 ) 

lambda(匿名函数)

因为aardio本身就支持在定义函数时不指定函数名,例如: function(){}。这样定义匿名函数更方便和理解,所以lambda实际并不需要使用

变量作用域

Python中定义一个变量后可以在函数的任意一个位置使用这个变量

for i in range(10):
    a = 1
print(a)

而aardio中使用var定义的局部变量作用域只限于当前语句块。

io.open()
while(true){
    var a = 1;
    break;
}
// 这个时候a就已经是null了
console.log(a)

namespace(名字空间)

namespace和Python模块的含义基本一样, 它其实就是个盒子,盒子里可以放你想放的函数或者变量,访问时通过名称+点+变量名来访问, 例如:

namespace module{
    a = 1;
}
io.print(module.a)

global是默认的全局名字空间,aardio代码文件加载时,默认都运行在global名字空间。self表示当前名字空间

导入名字空间(import)

和Python的导入库也基本类似,aardio的查找路径优先级:

  • 内核库,aardio内核提供的库,如string、raw等
  • 标准库,位于aardio根目录下的lib目录下,库路径与名字空间路径完全一致
  • 用户库,当前工程下的lib目录
  • 扩展库, 如果是开发环境(用编辑器启动没有编译成exe),还会查找扩展库列表。如果扩展库有的话,会提示你是否安装

本文由博客一文多发平台 OpenWrite 发布!文章来源地址https://www.toymoban.com/news/detail-840656.html

到了这里,关于aardio教程一) 基础语法-下的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • shell脚本----条件判断语句

    文件测试 test命令 测试表达是是否成立,若成立则返回0,否则返回其他的数 用法一:test 条件表达式 用法二:[ 条件表达式 ] 选项 含义 -e 测试目录或者文件是否存在 -d 测试是否为目录 -f 测试是否为文件 -r 测试当前用户是否有读的权限 -w 测试当前用户是否有写的权限 -x 测

    2024年02月01日
    浏览(43)
  • JavaScript条件判断if 语句

    一、if语句的分支 分类:单分支,双分支,多分支,分支嵌套 ()中可以是一个值,也可以是一个表达式 案例: 二、switch ()只能是变量或值,不能是表达式 案例: break必须添加,否则会继续往下执行 问题: 什么时候用if,什么时候用switch if:条件是一个范围 或者 是具体的

    2024年02月06日
    浏览(64)
  • linux 条件语句和逻辑判断

    目录 一、条件判断 二、逻辑判断 三、if和case 四、七个实验   一、条件判断 1.test测试 test [ 条件表达式 ]        -e:测试目录是否存在        -d:测试是否为目录      -f:是否为文件   -r:当前用户是否有读写权限 -w:当前用户是否有写权限 -x:当前用户是否有执行权限

    2024年02月06日
    浏览(41)
  • Python流程控制语句-条件判断语句练习及应用详解

    Python代码在执行时是按照自上向下顺序执行的。通过流程控制语句,可以改变程序的执行顺序,也可以让指定的程序反复执行多次。流程控制语句分成两大类:条件判断语句,循环语句。本节我们先来将条件判断语句。 if语句是Python中非常重要的流程控制语句之一,其基本语

    2024年02月09日
    浏览(50)
  • python条件判断语句(if else)

            python中判断语句的基本结构由if和else组成,当if后面的条件为真时,执行if下面的语句;当if后面的条件为假时,执行else下面的语句。这里条件的真假都是用bool值来作为依据的,我们知道比较运算、成员运算、身份运算返回的结果都是bool值。所以比较运算、成员运算

    2024年02月09日
    浏览(57)
  • MATLAB知识点:if条件判断语句的嵌套

     ​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自​第4章:MATLAB程序流程控制 我们通过一个经典例题来理解if的嵌套,所谓if的嵌套,是指在if、els

    2024年04月09日
    浏览(43)
  • MySQL 判断语句 条件函数 case when、if、ifnull

    在MySQL中,需要用到条件判断函数,例如 case when、if、ifnull。 (1)if 注意: 一个条件表达式两个结果 expr :条件表达式; 如果结果为true,则返回result_true,否则返回result_false。 (2)ifnull 注意: 如果查询结果是 null ,就转换为特定的值 result :查询结果; value :如果查询结

    2024年02月04日
    浏览(72)
  • C++ 条件与 If 语句:掌握逻辑判断与流程控制精髓

    您已经知道 C++ 支持数学中的常见逻辑条件: 小于: a b 小于或等于: a = b 大于: a b 大于或等于: a = b 等于: a == b 不等于: a != b 您可以使用这些条件来针对不同的决定执行不同的操作。 C++ 具有以下条件语句: 使用 if 来指定一个代码块,如果指定的条件为 true,则执行该

    2024年04月08日
    浏览(51)
  • 【python】Python基础语法详细教程以及案例教学之 while循环语句、while语句嵌套应用、for循环语句、for语句嵌套应用、循环中断

    目录  前言 一、while循环的基础语法  1)什么是while语句?  2)如何具体实现while语句? 二、while循环的基础案例 1)案例一:  2)案例二: 三、while循环的嵌套应用 1)学习目标: 2)什么是while循环的嵌套 3)如何实现while嵌套? 四、while循环的嵌套案例 1)学习目标 2)补充

    2024年01月25日
    浏览(60)
  • 【算法笔记】求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

    求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等及条件判断语句(A?B:C)、位运算、递归、公式、sizeof。 习题链接:题目链接 该题把我们的所有能用的方法都给限制死了,我们只能用一些的特殊的方法来做。不知道大家在思考的过程中考没考虑过

    2024年02月07日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包