"do" statements and value function

Timothy Miller gandalf at doctorTimothyMiller.com
Mon Jun 20 23:20:59 EDT 2011


Okay, I get it now. Nice little essay, Jacque!

Many thanks to Jacque and others on this thread.

Tim


On Jun 19, 2011, at 8:48 PM, J. Landman Gay wrote:

> On 6/19/11 4:10 PM, Timothy Miller wrote:
> 
>> Is it true that the "do" command and the "value" function perform
>> about the same tasks in different ways? I.e., is it true that you can
>> avoid "do" by judicious use of "value"?
> 
> They are for different purposes and not really interchangeable. The value function is more limited than "do", it just returns a single evaluation of an expression. "Do" can execute a whole script at a time, but it has a lot of overhead and should be avoided when possible.
> 
> I have never needed to nest value() functions, as per your other post; there is almost always a better way. The example of value(value(line x of fld y)) is redundant; just "get line x of fld y" is enough to give you the text of the line. Most things you want to do are like that, there are usually alternatives.
> 
> You need value() occasionally to force an evaluation when there is no other way. For example, it is used to call a function remotely when the function isn't in the message path:
> 
>  put value("myFunction()",stack "mySubstack")
> 
> In many cases you don't need value() at all, just supplying parentheses will force an evaluation. Parentheses are required for that reason when getting the contents of a URL container:
> 
>  get url ("file:"& fileVarPath)
> 
> Without the parentheses the call will fail. The text must be evaluated into a functional URL before it can work, and the parentheses force that to happen.
> 
> A common purpose for "do", besides constructing variables or syntax on the fly, is to execute commands in another language:
> 
>  do field 1 as applescript
> 
> That will force the AppleScript compiler to load. If you are "do"ing something in LiveCode instead of applescript, then LiveCode's own compiler needs to load. A "do" is functionally similar to opening the script editor, typing some commands, and hitting the "compile" button.
> 
> There are so many built-in ways to get values that explicitly calling "do" (or value) isn't necessary very often, though sometimes there is no way around it. If you want to post a few of your own "do" examples, maybe we can see if there is a different way to execute them.
> 
> -- 
> Jacqueline Landman Gay         |     jacque at hyperactivesw.com
> HyperActive Software           |     http://www.hyperactivesw.com
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list