J. Landman Gay wrote:

Richard Gaskin wrote:
It's very handy, but a cognitive hurdle for me at first. I'd never seen anything like it before.

You probably blocked it. :) <http://search.gmane.org/?query=custom+sort&group=gmane.comp.ide.revolution.user>

Wow. So many posts I've overlooked. Must have had stuff in beta during those threads. :)

Glad I took the time today, thought. You _can_ teach an old dog new tricks. :)


Speaking of mental gymnastics, here's my favorite. I use it a lot. I didn't write it, it was written by Tony Root from HyperPro back in the day, and turned into a function by Paul Foraker:

function whichOne var,fld1,fld2  -- from a handler by Tony Root
-- Handles a case where you need to return one value if your key is empty, another if not.

return (item offset(char 1 of (var = empty),"tf") of quote & fld1 &","& fld2 & quote)
end whichOne

Paul says:

"There's a great scripter working at Digital Pictures named Tony Root, who wrote a one-line boolean evaluator that I corrupted into a function. This handles the case where you need to return one value if your key is empty, another if not. For example, if the social security number field (var) is empty, then return "Please fill in your social security number" (fld1); otherwise, return "Now please fill in the form on the next page." (fld2). The elegant part (which Tony wrote) is getting the offset of char 1 of an expression that resolves to true or false, of "tf". Wish I'd thought of that. "

You don't have to use it for just empty/not empty. With some adjustments, you can use it to choose between any two values.

In other languages that's called iff. Paul's/Tony's implementation is very clever, but I believe it benchmarks a bit faster (and is easier to read) when written as an if-else without the itemoffset and concatenation:

function whichOne pVal, pTrue, pFalse
   if pVal is empty then return pTrue
   else return pFalse
end whichOne


A more classic iff would evaluate any expression to true or false - this one should handle empties as false as well:

function iff pExp, pTrue, pFalse
  if pExp is true then return pTrue
  else return pFalse
end iff

--
 Richard Gaskin
 Managing Editor, revJournal
 _______________________________________________________
 Rev tips, tutorials and more: http://www.revJournal.com
_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to