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