Java 如何定义返回参数?
我习惯了JAVA,因此在用ABAP编写代码时遇到了问题 我用两个参数调用一个方法。它应该返回一个数字,这样我就可以保存它了 我想要的是Java 如何定义返回参数?,java,methods,return,abap,Java,Methods,Return,Abap,我习惯了JAVA,因此在用ABAP编写代码时遇到了问题 我用两个参数调用一个方法。它应该返回一个数字,这样我就可以保存它了 我想要的是 int result = generate_num(40,5); int generate_num(int thisNum, int newDigit){ return thisNum * 10 + newDigit; } 到目前为止,我在ABAP试过这个 //声明方法 methods GENERATE_NUM importing !thisNu
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.
方法生成\u NUM。
数据:newNum类型i。
如果thisnum<0。
newNum=thisnum*10-新数字。
其他的
newNum=thisnum*10+newdigit。
恩迪夫。
返回值(newNum)。
ENDMETHOD。
但我在这段代码中迷失了方向,不知道如何返回值以及如何将其保存在另一个变量中。这就是使用返回参数声明方法的方式:
METHODS generate_num
IMPORTING
thisNum TYPE i
newdigit TYPE digit_number_value
RETURNING
value(result) TYPE i.
METHOD generate_num.
IF thisnum < 0.
result = thisnum * 10 - newdigit.
ELSE.
result = thisnum * 10 + newdigit.
ENDIF.
ENDMETHOD.
请注意,一个方法只能有一个返回的参数,并且该参数必须始终按值传递
在方法实现中,通过修改声明为返回参数的局部变量来设置返回值:
METHODS generate_num
IMPORTING
thisNum TYPE i
newdigit TYPE digit_number_value
RETURNING
value(result) TYPE i.
METHOD generate_num.
IF thisnum < 0.
result = thisnum * 10 - newdigit.
ELSE.
result = thisnum * 10 + newdigit.
ENDIF.
ENDMETHOD.
或者更像Java语法的函数语法,您可以用来:
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.
lv_foo = me->generate_num( thisNUm = 40 newDigit = 5).
如果该方法不仅具有导入参数,还具有更改或导出参数,则语法如下所示:
lv_foo = me->generate_num(
EXPORTING thisNUm = 40
newDigit = 5
CHANGING cv_bar = lv_bar ).
在声明部分,我可以只写(结果)类型I吗?因为它显示“(结果)”不是预期的。对不起,这是我的错误。价值观和偏执之间不能有空隙。我在回答中更正了它。该值不是可选的。如果所有参数是通过值(value关键字和parantasis)或引用(无值和parantasis或引用和parantasis)传递的,则必须为其声明。“按引用”不允许返回参数,因此您必须将其声明为“按值”。您的最后一句话不正确。是的,如果要将变量设置为方法的结果,则需要一个返回参数,但是可以在括号之间放置import-export-CHANGING,而无需使用关键字调用方法。lcl_例程=>method(导出imp='testing'导入exp=l_字符串)。@Bryan Cain:谢谢你的更正。我在回答中提到了这一点。有时在没有事务帮助的情况下编写ABAP代码(在本例中为SE37)可能会令人困惑,并导致打字错误和其他错误。在事务的帮助下编写函数/类/方法,然后在幕后生成代码,这是一个好主意。您将很容易在方法头中看到返回值(xxx)。