首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你能在PeopleCode中通过引用传递吗?

你能在PeopleCode中通过引用传递吗?
EN

Stack Overflow用户
提问于 2016-10-19 20:32:17
回答 3查看 2.5K关注 0票数 0

我是PeopleCode的新手,在学习函数的过程中,我注意到在PeopleCode中,我们通常使用%PATIENT_ID传递值,一个朋友告诉我在PeopleCode中也可以通过引用传递,但是怎么传递呢?

EN

回答 3

Stack Overflow用户

发布于 2016-10-20 02:59:30

对于函数,PeopleCode通过引用传递。

代码语言:javascript
复制
Function addOne(&num As integer)    
    &num = &num + 1 
End-Function;

Local integer &val = 9;
addOne(&val);
MessageBox(0, "", 0, 0,String(&val));

10个结果

如果您使用的是App类,那么它对于方法的行为是不同的:

简单类型(字符串、整数、数字等)的

  • 按引用传递对象(行集、记录、应用程序类)的
  • 简单类型的
  • 可使用参数列表中的OUT关键字按引用传递

method addOne(&num as integer out)

票数 7
EN

Stack Overflow用户

发布于 2017-01-03 10:13:08

在与执行代码相同的上下文中定义的函数,例如页面/组件/记录/字段事件PeopleCode,总是将参数视为引用。

在应用程序类中,方法上的简单类型的参数可以使用'out‘关键字来定义,以声明它们是一个引用。方法还自动将参数作为复杂类型的引用进行传递。想一想:“如果有很多数据,它就是一个参考。”

票数 1
EN

Stack Overflow用户

发布于 2017-01-27 08:47:20

本文档将对您非常有帮助。https://docs.oracle.com/cd/E26239_01/pt851h3/eng/psbooks/tpcr/chapter.htm?File=tpcr/htm/tpcr07.htm

使用对象数据类型传递参数的

具有对象数据类型的参数始终通过引用传递:

通过引用传递的/*参数*/方法storeInfo(&f作为文件);

如果为具有object数据类型的方法参数指定out修饰符,则它将成为引用参数。这意味着参数变量是通过引用传递的,而不是传递时它所指向的对象。

例如,如果使用out修饰符传递对象参数:

方法myMethod(&arg as MyObjectClass);本地方法&o1 =创建MyObjectClass("A");本地MyOtherObjectClass &o2 =创建MyOtherObjectClass();&o2.myMethod(&o1);并且在myMethod内部发生这种情况:方法myMethod &arg =创建MyObjectClass("B");结束方法;

由于方法参数是在myMethod的主体内重新分配的,因此&o1在方法调用完成后不会指向MyObjectClass的新实例(用“B”初始化)。这是因为&o1仍然引用MyObjectClass的原始实例。

但是,如果&o1已经通过out修饰符传递,则在方法调用完成后,&o1将指向上次分配给该参数的任何位置;在本例中,是MyObjectClass的新实例。通过引用传递参数,而不是对象。在下面的示例中使用参数的Out规范时,类AddStuff只有一个公共方法DoAdd。这会将两个数字相加,然后将它们指定为不同的数字。在方法声明的签名中,第一个参数没有使用out语句声明,而第二个参数是使用out语句声明的。

类方法方法DoAdd(&P1表示编号,&P2表示编号输出);结束类;方法DoAdd &X = &P1 + &P2;&P1 = 1;&P2 = 2;​-​;

在下面的PeopleCode示例中,从类AddStuff实例化了一个名为&Aref的对象。还定义了两个参数&I和&J。

本地号码&Aref =创建AddStuff();本地号码&I = 10;本地号码&J = 20;

下面的代码示例是正确的。&J被更改,因为方法签名中有because语句,而且值是通过引用传递的。&I的值不会更新。

&Aref.DoAdd( &I,&J);/*更改&J,但不更改&I */

下面的代码示例导致设计时错误。第二个参数必须通过引用传递,而不是通过值传递。

&Aref.DoAdd(10,20);/*错误-第二个参数不是变量*/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40131503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档