It's easy to dynamically create and set the values of variables, using the
"do" command, e.g.:
do format("put tValue into %s", tVarName)
I do lots of work with TSV files, which have a first row of field names, and
for years have used a function like this to create local variables, named for
each column, with the index to that column as their value
do makeAccessVars("vi", line 1 of tTSVdata)
where the function creates a script doing essentially the above for all the
field names, with a prefix (and taking care of spaces etc), which I then "do"
in the individual procedure so that the variables are declared local to the
procedure.
(Re Mike and Mark's comments, if it's a small thing I'll use an array; but for
large quantities of data - I'm often dealing with very large files, and after
calling this function will loop over tens or hundreds of thousands of rows
using the variables - I feel the need for speed outweighs the simplicity.)
A minor isse with this is that it doesn't play nice with explicitVars: in
order to nicely compile a script that invokes this function and then goes on
to, for example,
repeat for each line tRec in tTSVdata
doSomething item viUserID of tRec, item viUserName of tRec
I have to have declared viUserID, and viUserName in the handler.
HTH,
Ben
On 06/11/2016 15:50, Sannyasin Brahmanathaswami wrote:
Given this scenario:
We fetch a preference array from some json on disk
We want to insert the key-values into separate discrete local vars in the stack
script
function getUserPreferences
# the following function fetches an object in a JSON file:
put getPref ("preferences/modules/color-meditation") into aColorMedPrefs
# aColorMedPrefs now appears in variable watcher with keys
# aColorMedPrefs["BreathCount"] # value = 5
# aColorMedPrefs["BreathPace,"] # value = 1
# aColorMedPrefs["Cycles "] # value = 2
# aColorMedPrefs["AudioOn"] # value = "true"
# we want to pass each to a discrete local:
# sBreathCount,sBreathPace,sCycles,sAudioOn
repeat for each key x in aColorMedPrefs
put "s" & x into tNextPref
put aColorMedPrefs[x] into tNextPref
put tNextPref & comma after tSettings
end repeat
return tSettings
# result: "5,1,2,true" i.e. the values
# But what we really want to do was insert those values in the local vars on
each iteration.
return (sBreathCount,sBreathPace,sCycles,sAudioOn) # would also return
"5,1,2,true" # but we get ",,," i.e now values.
end getUserPreferences
------------
i.e. how do we dynamically create/name/instantiate variables & set their values
from values in a loop?
it begs for some syntax like
create var ("s" & x); put x into the last var
BR
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode