持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情
一点说明
首先在Caché ObjectScript Functions中方法是不分大小写的.所以$GET $G或者$get $g都是一样的。下文统一用$g。
具体使用方法
$g的用法是返回变量的数据值。
总共有以下三种用法:
1) 变量未定义
在变量未定义的情形下,$g返回空字符串。
此时$g其实相当于保护取值。比如在未定义的变量在引用过程中都会报 UNDEFINED错误:
w t_"123",! //变量t未定义
通过$g保护一下就不会报错了。如下:
w $g(a)_"123",! //123 a未定义,但是没报错
2) 变量已定义
在变量已定义的情形下,$g返回指定变量的数据值。
特别注意的是:变量可以是任何变量。 如:
set ^b(1)=123
w $g(^b(1)),! ///123
3) 设置数据值的默认值
这种用法允许变量的值为空的情况下,设置默认值。
如下所示:
w $g(c,234),! //234
与$d的区别
$d是判断变量的状态值$g是取变量的数据值- 在变量未定义的情况下,
$g的返回值是空字符串,$d的返回状态值是0,可以说在这种情形下,他们互为代替测试方案 - 在
$d的返回状态值是10,即数组变量存在一个子节点值,但数组本身不存在(仅作为向下指针的元素 "elements that are downward pointers only")的情况下,$g的返回值还是空字符串。
综合第3,4点,可以看出$d的测试方案的情形更加具体明了。
set ^e(1)=345
if $d(^e)=10 do
.w "$d返回的状态值是10 ^e是没有数据的向下指针节点",!
if $g(^e)="" do
.w "$g返回的数据值是空字符串 ^e未定义",!
代码地址 test5