Wednesday, October 9, 2013

Quick Tip: Intra-Statement Breakpoints

A statement referencing a non-existent variable is a common way to add a breakpoint to a q function.
q)f:{x:x+1;break;x+2}
While this is handy, it only lets you break between statements. A simple extension lets you break within statements, inspecting values at arbitrary points in the code, and continuing with execution once you’re done:
q)f:{x:x+1;{break;x}x+2}
Now, the break will occur after the portion of the statement to the right of the break function has executed, and x within the break function will have the value returned by that code. Since the break statement itself has no effects, and x contains the value returned by the code executed so far, typing : to continue will allow the rest of the break function to execute, returning x leftwards and allowing the rest of the statement to execute as if nothing had interrupted it.

Note that this is entirely legal inside qsql queries; I’ve often found it of particular utility there, since you can’t create new local variables inside a query. Unfortunately no specific examples come to mind at the moment; I’ll try to post one later to make it clearer how this technique works.

Labels: ,

1 Comments:

At October 22, 2020 at 9:07 PM , Blogger csyan said...

The quality of this replica jersey is perfect, cheap soccer jerseys uk and it is very comfortable to wear. It is comfortable to wear when traveling. The fabric is comfortable, soft, heavy, not thin, elastic,cheap kevin de bruyne jerseys and anti-wrinkle. I recommend this site to my good friends, they are very happy to get such cheap clothes

 

Post a Comment

Subscribe to Post Comments [Atom]

<< Home