Java 如何定义返回参数?

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

我习惯了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.
方法生成\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)。