用 Red 语言从列表中加载值
Load values from a list in Red language
我正在尝试使用以下代码从列表中读取值以放入字段元素中,这些元素也放置在另一个列表中:
Red [needs: view]
view [
text "N1:"
ff: field ""
text "N2:"
gg: field ""
do [fldlist: [ff gg]
vv: 5 ww: 10
varlist: [vv ww] ]
button "Click" [
repeat i (length? varlist)
[to-set-path to-word fldlist/i/text: varlist/:i] ] ]
但是,它不起作用。错误是:
*** Script Error: path fldlist/i/text: is not valid for none! type
*** Where: set-path
*** Stack: view do-events do-actor do-safe to-set-path to-word
我也尝试了 :i
(i)
和 (:i)
而不是 i
但它不起作用。问题出在哪里,如何解决?感谢您的帮助。
使用
button "Click" [
repeat i (length? varlist) [
tmp: get fldlist/:i
tmp/text: form get varlist/:i
]
]
我认为,您应该开始阅读一些有关 Red and Rebol and/or 概念的文档,只需在控制台中调试代码即可。
更新
我不得不承认,在这方面,Red 的行为并不像我对 Rebol 体验所期望的那样。但是我得到了另一个没有临时词的棘手解决方案。
button "Click" [
repeat i (length? varlist) [
set first find words-of get fldlist/:i 'text form get varlist/:i
]
]
此答案使用映射来合并您要应用的值,循环遍历值名称并将它们与具有相应 extra
值的字段名称进行比较,然后将它们设置为该值。
values: #(foo: 5 bar: 10)
fields: #()
ui: layout [
text "N1:"
field 100 extra 'foo
text "N2:"
field 100 extra 'bar
button "Click" [
foreach word intersect words-of values words-of fields [
fields/:word/text: form values/:word
]
]
]
foreach kid ui/pane [
if kid/extra [
put fields kid/extra kid
]
]
view ui
不过,我建议 中的第二个示例是更好的方法。
我正在尝试使用以下代码从列表中读取值以放入字段元素中,这些元素也放置在另一个列表中:
Red [needs: view]
view [
text "N1:"
ff: field ""
text "N2:"
gg: field ""
do [fldlist: [ff gg]
vv: 5 ww: 10
varlist: [vv ww] ]
button "Click" [
repeat i (length? varlist)
[to-set-path to-word fldlist/i/text: varlist/:i] ] ]
但是,它不起作用。错误是:
*** Script Error: path fldlist/i/text: is not valid for none! type
*** Where: set-path
*** Stack: view do-events do-actor do-safe to-set-path to-word
我也尝试了 :i
(i)
和 (:i)
而不是 i
但它不起作用。问题出在哪里,如何解决?感谢您的帮助。
使用
button "Click" [
repeat i (length? varlist) [
tmp: get fldlist/:i
tmp/text: form get varlist/:i
]
]
我认为,您应该开始阅读一些有关 Red and Rebol and/or 概念的文档,只需在控制台中调试代码即可。
更新
我不得不承认,在这方面,Red 的行为并不像我对 Rebol 体验所期望的那样。但是我得到了另一个没有临时词的棘手解决方案。
button "Click" [
repeat i (length? varlist) [
set first find words-of get fldlist/:i 'text form get varlist/:i
]
]
此答案使用映射来合并您要应用的值,循环遍历值名称并将它们与具有相应 extra
值的字段名称进行比较,然后将它们设置为该值。
values: #(foo: 5 bar: 10)
fields: #()
ui: layout [
text "N1:"
field 100 extra 'foo
text "N2:"
field 100 extra 'bar
button "Click" [
foreach word intersect words-of values words-of fields [
fields/:word/text: form values/:word
]
]
]
foreach kid ui/pane [
if kid/extra [
put fields kid/extra kid
]
]
view ui
不过,我建议