【问题标题】:Load values from a list in Red language从红色语言列表中加载值
【发布时间】:2017-09-20 13:08:09
【问题描述】:

我正在尝试使用以下代码从列表中读取要放入字段元素中的值,这些字段元素也放置在另一个列表中:

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 但它不起作用。问题出在哪里,如何解决?感谢您的帮助。

【问题讨论】:

    标签: user-interface variable-assignment rebol red


    【解决方案1】:

    使用

     button "Click" [
        repeat i (length? varlist)   [
            tmp: get fldlist/:i
            tmp/text:  form get varlist/:i
        ]  
    ]
    

    我认为,您应该开始阅读一些有关Red 和Rebol 概念的文档和/或只是在控制台中调试代码。

    更新

    我必须承认,在这方面,Red 的行为与我对 Rebol 经验的预期不同。但是我得到了另一个没有临时词的棘手解决方案。

    button "Click" [
        repeat i (length? varlist) [
            set first find words-of get fldlist/:i  'text form get varlist/:i
        ]  
    ] 
    

    【讨论】:

      【解决方案2】:

      此答案使用映射来合并您要应用的值,循环遍历值名称并将它们与具有相应 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
      

      不过,我建议this answer 中的第二个示例是更好的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-06
        • 1970-01-01
        相关资源
        最近更新 更多