gpt4 book ai didi

global-variables - 本地化全局变量

转载 作者:行者123 更新时间:2023-12-02 06:16:08 24 4
gpt4 key购买 nike

使用扩展程序检查时,我收到以下警告:

Do not declare fields and field symbols (variable name) globally.

这是在选择屏幕之前声明全局数据。显而易见的解决方案是它们应该在子例程中本地声明。

如果我决定这样做,数据现在将超出其他子例程的范围,所以我最终会创建一些东西来达到 C 或 Java 的 main() 函数的效果.这听起来是个好主意 - 然而,诸如 INITIALIZATION 之类的事件不允许出现在子程序内部,这意味着它会强制中断作用域。

观察下面的示例程序:

REPORT Z_EXAMPLE.
SELECTION-SCREEN BEGIN OF BLOCK upload WITH FRAME TITLE text-H01.
PARAMETERS: p_infile TYPE rlgrap-filename LOWER CASE OBLIGATORY.
SELECTION-SCREEN END OF BLOCK upload.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infile.
PERFORM main1 CHANGING p_infile.
INITIALIZATION.
PERFORM main2.
TOP-OF-PAGE.
PERFORM main3.
...
据我所知,

main1main2main3 不能在没有全局声明的情况下相互传递任何数据。如果数据是从main1中上传的文件p_infile解析出来的,那么在main2main3中是访问不到的。除了一起省略事件之外,是否有任何方法可以遵守警告但让数据通过事件传递?

最佳答案

有多种技术 - 除了基本的选择屏幕处理之外,我更喜欢在单独的 Controller 类中编写几乎所有代码。该报告只是遵从该类并调用其方法。除此之外 - 如果您知道自己在做什么,这只是一个警告,您可以忽略它。编写一个完全没有任何全局变量的程序肯定是不切实际的 - 但是,在方法参数更合适的地方使用全局变量或属性之前,您应该至少三思。

关于global-variables - 本地化全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31544564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com