问题描述
在PRACTICE脚本中,是否有一种简便的方法来遍历“变量/宏列表”?例如:
; this "list" changes...
PRIVATE &var1 &var2 &var3
; this implementation shall not change
; do something with &var1 &var2 &var3 ...
解决方法
我假定您正在考虑应该处理可变数量参数的子例程或单独的脚本。由于在执行时扩展了宏,被调用方将看不到宏,而只能看到其内容。因此,被呼叫者看到的是用空格分隔的值的列表。您可以编写一个子例程,将参数解析为一个字符串,然后使用STRing.SPLIT()将其分隔。示例:
api/profilo
输出:
PRINT "Print 1 item:"
GOSUB PrintItems ONE
PRINT "Print 3 items:"
GOSUB PrintItems ONE TWO THREE
ENDDO
PrintItems:
PRIVATE &list &count
ENTRY %LINE &list
&count=STRing.COUNT("&list"," ")+1
&index=0
RePeat
(
PRIVATE &item
&item=STRing.SPLIT("&list"," ",&index)
PRINT "&item"
&index=&index+1
)
WHILE &index<&count
RETURN
通过替换STRing.COUNT()和STRing.SPLIT()中的BLANK,当然也可以在子例程调用中,也可以使用其他分隔符。