函数返回值

请参考:定义函数

使用函数返回值

在aardio中函数是纯函数(Pure Function)- 输入输出数据流都是显式(Explicit)的。
函数从函数外部接受的所有输入信息都通过参数传递到该函数内部;函数输出到函数外部的所有信息都通过返回值传递到该函数外部,即函数的数据只有一个入口( 参数 ),一个出口( 返回值 )。函数可以返回多个值。

示例如下:

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

//定义一个函数 
func = function(){ 
    return 1,2,3; //函数有多个返回值 
}
   
re,re2,re3,re4 = func() //re==1,re2==2,re3==3,re4==null
   
re = func(); //re==1 其他返回值被丢弃

//把所有的返回值放到表构造器中生成一个table,
tab = { func() } //结果:tab[1]等于1,tab[2]等于2,tab[3]等于3

io.print( func() , "123" ) //这里func仅返回一个值
io.print( "123" , func() ) //多返回值函数只有在参数列表的尾部才能返回多个参数

使用返回值判断函数是否执行成功

注意:在aardio中如果一个函数有返回值,
通常成功时返回值的逻辑值为真,失败时通常会返回2个值,分别为 null,错误信息。

有时候会返回 false,错误信息。
null,false 作为逻辑值使用时是等价的,不影响判断语句的逻辑。
错误信息并不一定会提供。

如果未加特别说明,库函数都遵守此规则。
库函数一般不会轻易抛出异常,而是使用返回值来告知调用代码是否出错。
只有在遇到了不应该出现的严重的设计时错误,库函数才会抛出异常。
抛出异常通常意谓着该错误应该在编写代码时必须修正的问题。


示例:


test = 
function(a,b){
    
    
//无法原谅的设计时错误,抛出异常
    if( a === null ) error("请输入第一个参数");
    
if( b === null ) error("请输入第二个参数");
    
    
iffalse ){
        
return null,"函数在执行时遇到了运行时错误,例如网络连接失败"
    }
    
    
return true;
}

使用rget拣选返回值

1、函数原型:

返回值列表 = rget( 位置,函数调用语句 )


2、函数说明:

位置参数为正数时从返回值列表左侧开始计数,为负数时从返回值列表右侧开始倒数。
rget函数可以指定一个返回值列表中的位置,将该位置的返回值作为第一个返回值,丢弃前面的返回值,并返回其他返回值。

3、调用示例:

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

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

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