[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 var (ret1, ret2) = func( 111, "AAA" ); 9 var 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 函数 (7.9 KB) |--closure--| dao.routine.closure: 匿名函数和函数闭包 (2.5 KB) |--section--| dao.routine.section: 代码块方法 (3.8 KB)