[Swift-devel] loops and strings

Veronika Nefedova nefedova at mcs.anl.gov
Fri Jul 27 14:26:36 CDT 2007


I guess I am still missing something. I *can* have multiple  
assignments to the same variable inside the loop. Here, this code  
assigns different values to "name" at every loop step:

file fls[]<filesys_mapper;pattern="*.prt",location=".">;
foreach prt_file in fls
{
       string name = @strcut (@prt_file, "\.\/(.*)\.prt");
       print (name);
}


Or "name" considered to be a new variable every time  since I have a  
type declaration next to it?

Nika

On Jul 27, 2007, at 2:11 PM, Mihael Hategan wrote:

> On Fri, 2007-07-27 at 14:01 -0500, Veronika Nefedova wrote:
>> will allowing multiple assignments to the same variable be a really
>> impossible thing to have in swift?
>
> With what we currently have as "Swift", yes.
>
>>
>> Nika
>>
>> On Jul 27, 2007, at 1:24 PM, Mihael Hategan wrote:
>>> I see we're getting back to the same old story of the conflict  
>>> between
>>> writing a mapper and hacking one directly in swift.
>>>
>>> This is an issue we really need to deal with. It has produced more
>>> discussions and hacks than any other single Swift issue.
>>>
>>> You could use an array, or we could provide a folding operator/
>>> function,
>>> or even a join function.
>>> We could also let fixed_array_mapper accept an array as a
>>> parameter, so
>>> you would build an array with the file names and then pass it to the
>>> mapper.
>>>
>>> On Fri, 2007-07-27 at 11:09 -0500, Veronika Nefedova wrote:
>>>> I need to 'cat' together an unknown number of strings to form a
>>>> string, thats why I was attempting to do it inside the loop. And  
>>>> even
>>>> if I knew the number of loop cycles (say, its 68) -- are you
>>>> suggesting  to do it 'by hand' ?
>>>>
>>>>
>>>> Anyway - my main goal is not to create this string, but to map an
>>>> array:
>>>> file whamfiles_$s[] <fixed_array_mapper;files="$wham_string">;
>>>>
>>>> Do you see a solution here?
>>>>
>>>> Thanks,
>>>>
>>>> Nika
>>>>
>>>>
>>>> On Jul 27, 2007, at 11:01 AM, Mihael Hategan wrote:
>>>>
>>>>> wham_string2 = @strcat(wham_string, ", wham");
>>>>> print(wham_string2);
>>>>>
>>>>> Variables are not variables. They are labels that are used to
>>>>> direct the
>>>>> data flow. Loops (in the sense of data looping around the same
>>>>> node -
>>>>> picture this as a data flow graph) make no sense.
>>>>>
>>>>> On Fri, 2007-07-27 at 10:50 -0500, Veronika Nefedova wrote:
>>>>>> So how else then I construct a string in swift ?
>>>>>>
>>>>>>
>>>>>> On Jul 27, 2007, at 10:46 AM, Mihael Hategan wrote:
>>>>>>
>>>>>>> Variables in swift are single assignment. You can't assign to a
>>>>>>> variable
>>>>>>> twice. What, in your opinion, should the error message be  
>>>>>>> instead
>>>>>>> of the
>>>>>>> current one?
>>>>>>>
>>>>>>> On Fri, 2007-07-27 at 10:22 -0500, Veronika Nefedova wrote:
>>>>>>>> I am not sure if its possible to do string operations inside  
>>>>>>>> the
>>>>>>>> loop
>>>>>>>> in swift?
>>>>>>>> I have a versy simple test code that doesn't work no matter  
>>>>>>>> what.
>>>>>>>> Obviously, I am missing something.
>>>>>>>> This is the code:
>>>>>>>>
>>>>>>>> file fls[]<filesys_mapper;pattern="*.prt",location=".">;
>>>>>>>> string wham_string = "#";
>>>>>>>> foreach prt_file in fls
>>>>>>>> {
>>>>>>>>        wham_string = @strcat (wham_string, ", wham");
>>>>>>>>        print (wham_string);
>>>>>>>> }
>>>>>>>> print (wham_string);
>>>>>>>>
>>>>>>>>
>>>>>>>> basically I expect to have this as an output:
>>>>>>>> #,wham,wham,wham,wham,... (its a test code (-;)
>>>>>>>>
>>>>>>>> instead I have these errors:
>>>>>>>>
>>>>>>>> wham_string is already assigned with a value of #
>>>>>>>> wham_string is already assigned with a value of #
>>>>>>>>          vdl:assign @ test.kml, line: 46
>>>>>>>>          vdl:mains @ test.kml, line: 39
>>>>>>>> Caused by: java.lang.IllegalArgumentException: wham_string is
>>>>>>>> already
>>>>>>>> assigned with a value of #
>>>>>>>>          at org.griphyn.vdl.mapping.AbstractDataNode.setValue
>>>>>>>> (AbstractDataNode.java:255)
>>>>>>>>          at org.griphyn.vdl.karajan.lib.Assign.function
>>>>>>>> (Assign.java:70)
>>>>>>>> <snip>
>>>>>>>>
>>>>>>>>
>>>>>>>> In any case -- if I can't construct the string by using the
>>>>>>>> loop -
>>>>>>>> how else could it be done?
>>>>>>>>
>>>>>>>> I use the constructed string then to map an array (I  
>>>>>>>> understand I
>>>>>>>> can't map individual array elements):
>>>>>>>>
>>>>>>>> file whamfiles_$s[]
>>>>>>>> <fixed_array_mapper;files="$wham_string">; //it
>>>>>>>> was in the wrapper script before)
>>>>>>>>
>>>>>>>>
>>>>>>>> Nika
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Swift-devel mailing list
>>>>>>>> Swift-devel at ci.uchicago.edu
>>>>>>>> http://mail.ci.uchicago.edu/mailman/listinfo/swift-devel
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>




More information about the Swift-devel mailing list