首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Lauterbach CMM脚本中使用宏声明数组

如何在Lauterbach CMM脚本中使用宏声明数组
EN

Stack Overflow用户
提问于 2019-11-05 15:21:12
回答 1查看 1.7K关注 0票数 2

我想用Lauterbach CMM脚本中的宏创建一个数组。

我尝试了以下几点:

代码语言:javascript
复制
LOCAL &ARRAY_VAR[10]

这个语法不起作用。

我知道如何用Var.NEWLOCAL创建数组:

代码语言:javascript
复制
Var.NEWLOCAL int[3] \ARRAY_VAR

有什么方法可以用数组创建宏吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-08 14:44:44

简短答案:实践不支持宏数组。

Longer应答:实践可以执行递归宏扩展,这允许您执行与实际数组类似的操作。(见user.pdf中的“实践宏”)

例如:

代码语言:javascript
复制
LOCAL &myarr0 &myarr1 &myarr2 &myarr3   
LOCAL &data &i

&data="zero|one|two|three"

// Assign values to &myarra0 to &myarra3 in a loop
&i=0.
WHILE &i<4.
(
    PRIVATE &cmd
    &cmd="&"+"myarr"+FORMAT.Decimal(1,&i)+"=STRing.SPLIT(""&"+"data"",""|"",&i)"
    &&cmd   // << evaluate with recursive macro expansion
    &i=&i+1.
)

// Print values saved in &myarra0 to &myarra3 in a loop
&i=0.
WHILE &i<4.
(
    PRIVATE &val
    &val="&"+"myarr"+FORMAT.Decimal(1,&i)
    &&val="&val"   // << assign with recursive macro expansion
    ECHO "&val"
    &i=&i+1.
)

如果您不关心拥有太多的全局宏,也可以在这样的循环中创建伪数组:

代码语言:javascript
复制
LOCAL &i
&i=0
WHILE &i<4.
(
    PRIVATE &cmd
    &cmd="GLOBAL "+"&"+"myarr"+FORMAT.Decimal(1,&i)
    &cmd
    &i=&i+1
)

我不会这么做,因为我不喜欢全局宏。

解决方案:使用Var.NEWLOCAL创建数组

例如:

代码语言:javascript
复制
Var.NEWLOCAL char[4][32] \myarr
LOCAL &i &data

&data="zero|one|two|three"

// Assign values to \myarr in a loop
&i=0.
WHILE &i<4
(
    PRIVATE &val
    &val=STRing.SPLIT("&data","|",&i)
    Var.Assign \myarr[&i]="&val"
    &i=&i+1.
)

// Print values saved in \myarr in a loop
&i=0.
WHILE &i<4
(
    ECHO Var.STRing(\myarr[&i])
    &i=&i+1.
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58714432

复制
相关文章

相似问题

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