Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] Re: Forward References

From: ingo:2b1 at: 14-Dec-2001 10:37

Hi Richard, Once upon a time Richard Boyd spoketh thus:
> The REBOL/Command User Guide page 8-29 states .. > > --Forward References-- > "Sometimes a script needs to refer to a function before it has been > evaluated. This can be done as long as the variable for the function is > not evaluated before it is defined."
<..>
> -------------- REFERENCE AFTER FAILS ------------------ > REBOL [Title: "Forward Reference"] > > view layout > [banner "Forward Reference Test" > button "New Pane" [open-new-pane]] > > open-new-pane: func > [] > [view layout > [banner "New Window" > button "Quit" [quit] > button "Unview" [unview]]] > --------------------------------------------------------------------
In your example, once the 'view function is reached, the value of open-new has to be present, because part of the script _after_ view, are only reached after closing the view window. e.g.: --------- Script 1 ------------ REBOL[] print 'before view layout [ label "hi" ] print 'after -------- Script 1 ------------- If you run this script, first 'before is printed, _then_ the window is opened, and 'after is only printed, if you close the window. The proper way to forward reference for you would be to create a new word holding the layout until it is viewed, like this: -------- Script 2 ------------- REBOL [] lay: layout [ banner "Forward Reference Test" button "New Pane" [open-new-pane] ] open-new-pane: func [][ view layout [ banner "New Window" button "Quit" [quit] button "Unview" [unview] ] ] view lay -------- Script 2 ------------- Now all functions are defined, before they are needed (evaluated) in the 'view function. I hope that clarifies it a bit. Kind regards, Ingo