【发布时间】:2017-09-17 02:47:54
【问题描述】:
我正在使用以下代码通过 foreach 循环向视图添加多个 GUI 元素:
myRange: function [n][ ; to produce a vector of [1 2 3 4... n]
vv: make vector! n
i: 1
foreach j vv [
vv/:i: i
i: i + 1
if i > n [break]]
vv ]
view collect[
foreach i myRange 10 [
print append "i in loop: " i
keep [ t: text ] keep append "message number: " i
keep [field "entry" button "Click" [t/text: "clicked"] return]
] ]
正在生成所有 GUI 元素。但是代码 append "message number: " i 在所有文本元素中显示 i 的值是 12345678910 而不是 1、2、3... 10 对于不同的文本元素。
另外,print append... 语句产生以下输出:
i in loop: 1
i in loop: 12
i in loop: 123
i in loop: 1234
i in loop: 12345
i in loop: 123456
i in loop: 1234567
i in loop: 12345678
i in loop: 123456789
i in loop: 12345678910
此外,单击任何按钮只会更改最后添加的文本元素的文本。
问题出在哪里,如何解决?感谢您的帮助。
编辑:似乎该语言正在转换我的代码:
for i 1 10 1 [
print append "i in loop: " i ]
到:
a_variable: "i in loop"
for i 1 10 1 [
print append a_variable i ]
这不是我和(我认为)大多数用户想要的。在大多数语言中,字符串“i in loop”将被视为常量,并且不会转换为变量,因为用户没有指定它。恕我直言,如果不改变这些基本约定,其他语言的用户会更容易来到这里。
【问题讨论】:
标签: loops user-interface rebol red