表变量作为返回值
表变量和类最大的区别是表变量中的字段是public类型的,而类的成员变量是protected,并且两者的访问级别都是不可更改的,只能用默认的访问级别。
刚刚在写代码的时候遇到了一个问题,如下代码所示:
static void ReturnValueTest(Args _args)
{
;
CustTable::find('4001').AccountNum = '4002';
}
{
;
CustTable::find('4001').AccountNum = '4002';
}
编译该代码得到报错信息:
*** 错误: 31,字段必须是允许赋值的数据元素。
也就是说这样赋值是不行的,该函数返回的是一个表变量,我们知道表变量中的字段是public类型的,但通过CustTable::finde('4001')返回的值是只读的,也就是说通过方法返回的表变量是一个常量指针,那如何是好那?X++中一般的做法如下:
static void ReturnValueTest(Args _args)
{
CustTable custTable;
;
custTable = CustTable::find('4001');
custTable.AccountNum = '4002';
}
如果说返回一个常量指针是怕函数返回的对象被客户端代码修改,但在X++里这个常量指针又可以赋值给一般的(非常量)指针,从而修改原有的对象,何必绕这个弯那?
{
CustTable custTable;
;
custTable = CustTable::find('4001');
custTable.AccountNum = '4002';
}