功能( Functions)

优质
小牛编辑
131浏览
2023-12-01

Rexx中的代码通常分为函数和子例程。 使用函数有助于将代码分离为更多逻辑单元。 让我们详细看看这些功能。

定义一个函数 (Defining a Function)

函数声明的语法如下 -

FunctionName: 
PARSE ARG arguement1, arguement2… arguementN 
Return value 

Where,

  • FunctionName - 这是分配给函数的名称。

  • PARSE ARG - 这些是Rexx中的关键字,用于提及参数传递给函数。

  • arguement1, arguement2… arguementN - 这些是传递给函数的参数。

  • Return value - 这是函数返回的值。

以下程序是Rexx中如何使用函数的简单示例。

/* Main program */ 
say add(5,6) 
exit 
add: 
PARSE ARG a,b 
return a + b 

关于上述计划,应注意以下事项 -

  • 我们定义了一个名为add的函数,它接受2个参数a和b。

  • 该函数使用return语句返回a和b的总和。

  • 退出语句必须用于表示主程序的结束。

上述方案的产出如下 -

11

使用参数

在Rexx中,可以使用特定的函数来处理参数。 让我们看看几个这样的论点。

arg

此方法用于返回为函数定义的参数数。

Syntax -

arg() 

Parameters - 无

Return Value - 此方法返回为函数定义的参数数。

Example -

/* Main program */ 
say add(5,6) 
exit 
add: 
PARSE ARG a,b 
say arg() 
return a + b 

Output - 当我们运行上述程序时,我们将得到以下结果。

2 
11 

arg(index)

此方法用于返回特定位置的参数值。

Syntax -

arg(index)

Parameter -

  • Index - 要返回的参数的索引位置。

Return Value - 此方法返回特定位置的参数值。

Example -

/* Main program */ 
say add(5,6) 
exit 
add: 
PARSE ARG a,b 
say arg(1) 
return a + b 

Output - 当我们运行上述程序时,我们将得到以下结果。

5 
11 

递归函数 (Recursive Functions)

递归函数或例程是自称的函数。 任何递归函数都可以以传统的非递归方式(或迭代)进行编码,但有时递归提供了更好的问题解决方案。 并非所有编程语言都支持递归; 雷克斯。

让我们看一下使用Rexx中的递归函数的着名因子程序的示例。

/* Main program */ 
do n = 1 to 5 
say 'The factorial of' n 'is:' factorial( n ) 
end 
return  
/* Function to get factorial */ 
factorial : procedure 
n = arg(1) 
if n = 1 then 
return 1 
return n * factorial( n - 1 ) 

上述计划的输出如下 -

The factorial of 1 is: 1
The factorial of 2 is: 2 
The factorial of 3 is: 6 
The factorial of 3 is: 24 
The factorial of 3 is: 120