[NAME]
ALL.dao.routine

[TITLE]
Routine 函数

[DESCRIPTION]

函数是一相对独立的代码块,可在需要的地方和时候反复调用。 它可以接受参数以改变函数的行为。 它
也可将结果返回给它的调用者。

 0.1   定义  

道函数可由关键字routine定义。例如: 
     
   1  routine func( first, second )
   2  {
   3     first += 10;
   4     second += "test";
   5     return first, second; # 返回多个值;
   6  }
   7  
   8  (ret1, ret2) = func( 111, "AAA" );
   9  ret3 = func( ret1, ret2 );
     
这里定义了一个可带两个参数作为输入,并返回两个值作为输出。

 0.2  参数类型与缺省值 

道函数的参数可以有类型标注,也可以有缺省值: 
     
   1  routine MyRout( name: string, index = 0 )
   2  {
   3     io.writeln( "NAME  = ", name )
   4     io.writeln( "INDEX = ", index )
   5  }
     
这里参数name的类型被声明为字符串, 参数index的缺省值被声明为零(它的类型也就被自动声明为整型
)。 任何带缺省值的参数后面的参数必须都带缺省值。

 0.3  函数重载 

道语言里,函数可按参数类型进行重载。也就是可对于拥有不同参数类型的函数 使用同样的名称,函数调
用时,道虚拟机根据调用中的参数选择正确的函数来运行。 
     
   1  routine MyRout( index: int, name = "ABC" )
   2  {
   3     io.writeln( "INDEX = ", index )
   4     io.writeln( "NAME  = ", name )
   5  }
   6  
   7  MyRout( "DAO", 123 )     # 调用上例中的MyRout()
   8  MyRout( 456, "script" )  # 调用此例中的MyRout()
     



[STRUCTURE]

dao.routine--| dao.routine: Routine 函数 (13.8 KB)
             |--closure----| dao.routine.closure: 匿名函数和函数闭包 (2.5 KB)
             |--section----| dao.routine.section: 代码块方法 (3.8 KB)
             |--decorator--| dao.routine.decorator: 修饰器函数 (6.0 KB)