1

私はこのコードを持っています:

REBOL [Title: "Employee list"]

screen1: does [

    emp-list: [
        "Amy" 1
        "Bob" 2
        "Carrie" 3
    ]

    gui-layout: [ text "click your name" ]

    foreach [emp-name emp-id] emp-list [
        append gui-layout compose/deep [
        box (emp-name) [screen2 (emp-id)]
        ]
    ]

    view layout gui-layout
]

screen2: func [emp-id] [

    choice-list: [
        "A" 11
        "B" 22
    ]

    gui-layout: [
        box "<-- back to names" [screen1]
        text reform ["clicked id " emp-id ", now choose below"]
    ]

    foreach [choice-name choice-id] choice-list [
        append gui-layout compose/deep [
        box (choice-name) [print [(emp-id) (choice-id)]]
        ]
    ]

    view layout gui-layout
]

screen1

ここで、誰かをクリックしてから[戻る]をクリックすると、メニューが大きくなります。(そして、他の誰かをクリックすると、2番目のメニューも大きくなります。)私が見つけた1つの回避策(?)は、これを行うことから最初の画面を修正するclear emp-list前に置くことです。view layout gui-layoutそれでも、そこにいると、それが成長してprint emp-listいるのではないことがわかります。emp-listどうすればいいの?

4

1 に答える 1

4

関数の永続化機能を使用しています。

見る

persist: has [ a ] [ a: [] append a random 100 print a ]


no-persist: has [ a ] [ a: copy [] append a random 100 print a ]

あなたがやりたいことをするために、あなたが追加している各シリーズの前に'コピーを置いてください

gui-layout: copy [ text "click your name" ]

gui-layout: copy/deep [
        box "<-- back to names" [screen1]
        text reform ["clicked id " emp-id ", now choose below"]
    ]
于 2012-10-05T19:03:47.107 に答える