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 July 15, 2019 at 6:51 PM , Blogger madin said...

The moment I opened the box, I was surprised that it was just a replica, but it looked exactly the same as the original and the quality was good.Best UK Swiss Replica Watches Sale I think this should be the best replica watch I have ever bought. I share this website with my friends.Replica rolex day date watches They are very happy, the price is cheap, I can buy such a good watch.

 

Post a Comment

Subscribe to Post Comments [Atom]

<< Home