def var cList as char no-undo.
assign cList = "one,two,three,four".
<Loop> cList
logic...
</Loop>
通过一个char变量逗号分隔的列表什么是最好的方式来循环,使得在这个例子中,我会得到一个那么双然后是三个然后是四个。运行一个逗号分隔的项目列表上的循环前进4GL
def var cList as char no-undo.
assign cList = "one,two,three,four".
<Loop> cList
logic...
</Loop>
通过一个char变量逗号分隔的列表什么是最好的方式来循环,使得在这个例子中,我会得到一个那么双然后是三个然后是四个。运行一个逗号分隔的项目列表上的循环前进4GL
大声笑我还记得有点进步,我想。
DEF VAR i AS INT NO-UNDO.
&SCOPED-DEFINE LIST "one,two,three,four"
DO i=1 TO NUM-ENTRIES({&LIST}):
MESSAGE SUBSTITUTE("LIST[&1] is &2", i, ENTRY(i, {&LIST})).
END.
DEFINE VARIABLE ch-list AS CHARACTER NO-UNDO.
DEFINE VARIABLE i-cnt AS INTEGER NO-UNDO.
DEFINE VARIABLE i-entry AS INTEGER NO-UNDO.
ASSIGN
ch-list = "one,two,three,four"
.
ASSIGN
i-cnt = NUM-ENTRIES(ch-list)
.
REPEAT i-entry = 1 TO i-cnt:
DISPLAY
ENTRY(i-entry, ch-list)
WITH DOWN.
END.
DEFINE VARIABLE iNumEntries AS INTEGER NO-UNDO.
DEFINE VARIABLE iLoop AS INTEGER NO-UNDO.
def var cList as char no-undo.
assign cList = "one,two,three,four".
ASSIGN iNumEntries = NUM-ENTRIES(cList,",").
DO iLoop = 1 TO iNumEntries:
MESSAGE ENTRY(iLoop,cList,",") VIEW-AS ALERT-BOX.
/* You can use display, assign to variable, etc */
END.
你的答案只是一段代码,没有任何解释,因此,它很可能被删除。 – 2015-08-28 08:17:00
欢迎来到堆栈溢出!虽然这段代码可能会回答这个问题,但为什么和/或代码如何回答这个问题提供了额外的背景,这提高了它的长期价值。 – NathanOliver 2015-08-28 14:51:35
是否有一个具体的原因,'NUM-ENTRIES'功能在内衬中重复的语句?与它有什么关系,必须通过循环对每次迭代进行评估? – 2015-09-23 15:07:04
是 - REPEAT ...在循环的每次迭代中评估函数,因此为了获得更好的性能,请将循环外的num-entries值存储在变量中,然后使用该变量。 – 2015-09-23 19:41:08
或者做一个负循环(重复i-entry = NUM-ENTRIES(ch-list)为-1 by -1),因为在每次迭代中只有第二个元素被重新评估,但是通过列表反向工作。 – AquaAlex 2016-02-11 14:43:51