我习惯了JAVA,因此用ABAP写这段代码有问题。
我调用了一个有两个参数的方法。它应该返回一个数字,这样我就可以保存它。
我想要的是
int result = generate_num(40,5);
int generate_num(int thisNum, int newDigit){
return thisNum * 10 + newDigit;
}
到目前为止,我在 ABAP 中尝试过这个。
//声明方法
methods GENERATE_NUM
importing
!thisNum type I
!NEWDIGIT type DIGIT_NUMBER_VALUE.
//调用方法
CALL METHOD me->Generate_NUM
EXPORTING
thisNUm = 40
newDigit = 5.
//方法本身
METHOD GENERATE_NUM.
DATA: newNum type i.
If thisnum < 0.
newNum = thisnum * 10 - newdigit.
Else.
newNum = thisnum * 10 + newdigit.
ENDIF.
RETURNING VALUE(newNum).
ENDMETHOD.
但是我迷失在这段代码中,不知道如何返回一个值以及如何将它保存在另一个变量中。
最佳答案
这就是你如何声明一个带有返回参数的方法:
METHODS generate_num
IMPORTING
thisNum TYPE i
newdigit TYPE digit_number_value
RETURNING
value(result) TYPE i.
请注意,一个方法只能有一个RETURNING
参数,并且该参数必须始终按值传递。
在方法实现中,通过修改声明为返回参数的局部变量来设置返回值:
METHOD generate_num.
IF thisnum < 0.
result = thisnum * 10 - newdigit.
ELSE.
result = thisnum * 10 + newdigit.
ENDIF.
ENDMETHOD.
返回值将是方法返回时 result
的任何值。就像使用 EXPORTING
参数一样。
当你调用一个方法时,你可以使用经典的 CALL 语法,它更像是经验丰富的 ABAP 开发人员习惯的语法:
DATA lv_foo TYPE i. " the variable you want to store the return value in
CALL METHOD me->generate_num
EXPORTING
thisNUm = 40
newDigit = 5
RECEIVING
result = lv_foo.
或者更像您可能习惯的 Java 语法的函数式语法:
lv_foo = me->generate_num( thisNUm = 40 newDigit = 5).
如果该方法不仅有导入参数,还有更改或导出参数,则语法如下所示:
lv_foo = me->generate_num(
EXPORTING thisNUm = 40
newDigit = 5
CHANGING cv_bar = lv_bar ).
关于java - 如何定义返回参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12317604/