trace results number=1/7 parse number before '.' after say after'.'beforewould result in:
--- trace1.nrx 2 *=* number=1/7 >v> number "0.142857143" 3 *=* parse number before '.' after >v> before "0" >v> after "142857143" 4 *=* say after'.'before >>> "142857143.0" 142857143.0where the line marked with --- indicates the context of the trace, lines marked with *=* are the instructions in the program, lines with >v> show results assigned to local variables, and lines with >>> show results of un-named expressions.
Further, trace methods lets you trace the use of all methods in a class, along with the values of the arguments passed to each method. Here's the result of adding trace methods to the Oblong class shown earlier and then running tryOblong:
--- Oblong.nrx 8 *=* method Oblong(newwidth, newheight) >a> newwidth "5" >a> newheight "3" 26 *=* method print Oblong 5 x 3 20 *=* method relsize(relwidth, relheight)- 21 *-* returns Oblong >a> relwidth "1" >a> relheight "1" 26 *=* method print Oblong 6 x 4 10 *=* method Oblong(newwidth, newheight) >a> newwidth "1" >a> newheight "2" 26 *=* method print Oblong 1 x 2where lines with >a> show the names and values of the arguments.
It's often useful to be able to find out when (and where) a variable's value is changed. The trace var instruction does just that; it adds names to or removes names from a list of monitored variables. If the name of a variable in the current class or method is in the list, then trace results is turned on for any assignment, loop, or parse instruction that assigns a new value to the named variable.
Variable names to be added to the list are specified by listing them after the var keyword. Any name may be optionally prefixed by a - sign., which indicates that the variable is to be removed from the list.
For example, the program trace2.nrx:
trace var a b -- now variables a and b will be traced a=3 b=4 c=5 trace var -b c -- now variables a and c will be traced a=a+1 b=b+1 c=c+1 say a b cwould result in:
--- trace2.nrx 3 *=* a=3 >v> a "3" 4 *=* b=4 >v> b "4" 8 *=* a=a+1 >v> a "4" 10 *=* c=c+1 >v> c "6" 4 5 6
[previous | contents | next]