次のコードを使用して、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" は定数と見なされ、変数に変換されません。ユーザーがそのように指定していないためです。そのような基本的な慣習が変更されなければ、他の言語のユーザーがここに来るのがより簡単になるでしょう。