Caché ObjectScript Functions中$PIECE $P用法以及注意点

509 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

一点说明

首先在Caché ObjectScript Functions中方法是不分大小写的.所以$PIECE $P或者$piece $p都是一样的。下文统一用$p

具体使用方法

1) 拼接填值

piece意为拼凑,所以$p是一个拼凑字符串的函数。

如在字符串a="1|2|3"中第3个|分割的位置拼接填值 4:

set $p(a,"|",3)=4 //此时 a=1|2|4

2) 分割取值

另外一个用法就是分割取值,这个用法是最常见的用法,反而第一个用法不常用。

如在字符串b="1|2|3"中以"|"分割,取第3位置的值:

w $p(b,"|",3),! //3

注意点

1) 在字符串c="1|2|3"中第5个|分割的位置拼接填值 5 会怎么样?

答案是 c=1|2|3||5 这在更新方法中非常实用,不用判断入参有多少个分割符。

2) 在字符串d="1|2|3"中以"|"分割,取第5位置的值 会怎么样?

答案是 空 也不会报错,所以不用判断"|"分割的长度是多少

3) 在字符串e="1|2|3|4|5"中以"|"分割,取第2位置的值到第4位置的值 会怎么样?

答案是 w $p(e,"|",2,4),! //2|3|4 也就是分割取值的超级变种方法

4) 在字符串f="1|2|3|"中以"/"分割,取第2位置的值 会怎么样?

答案是 空 也不会报错,也不需要去判断有没有分割符

5) 在字符串g=""中以"|"分割,取第2位置的值 会怎么样?

答案是 空 也不会报错,也不需要去判断是否为空

当然w $p(h,"|",2),! //h未定义 这个肯定会报错的

所以一般$p可以先用$d判断是否变量被定义。下一节讲$d

以上的代码片段

image.png