java - 如何定义返回参数?

标签 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
  !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/

相关文章:

java - 如何根据日期对HashMap进行排序?

java - 我应该将我的单元测试文件夹添加到 Eclipse 中的 java 构建路径吗?

Java:在 3 行或更少的时间内查找 2 个集合的并集、交集、差异和异或

python - 生成生成器时如何压平 yield ?

java - Java中如何调用通配符类型的泛型方法?

java - EclipseLink:级联删除代替更新时出现问题

python - 拦截 Python 中的切片操作

methods - 在函数内部定义结构的方法

Excel的查找功能;值的异常(exception)

dart - Dart 函数的默认返回值是多少?