[Swift-devel] loops and strings

Mihael Hategan hategan at mcs.anl.gov
Fri Jul 27 15:30:12 CDT 2007


Seriously now. Having a mapper would save you lots of time. I'll help
you out.

Take a look at AirsnMapper.java and ROIMapper.java.

Mihael

On Fri, 2007-07-27 at 15:13 -0500, Veronika Nefedova wrote:
> ok, here is the problem I do not see how to bypass.
> 
> I have an outer loop:
> 
> foreach f in files {
> string S = "bla"
> }
> 
> I need to have this array declared, and if I generate the string in  
> the shell script, it has to be declared explicitly:
> 
> foreach f in files {
> string S = "bla"
> file whamfiles [] <fixed_array_mapper;files="file1_S, file2_S,  
> file3_S">;
> }
> 
> and it has to be "S", not its value since its all inside the loop.  
> But for swift to recognize S as its own variable (and substitute its  
> value on every loop step) I need to use strcat:
> @strcat("file1_", S), @strcat("file2_", S), etc for each of the  
> string's element -- I do not see a way for doing it so far without  
> being able to construct a string in swift... There are 68 elements in  
> that string but could be any number.
> 
> Does anybody have any suggestions?
> 
> Nika
> 
> > This proves a bit cumbersome to have this combination of swift and  
> > the wrapper. This array declaration has to be inside another loop,  
> > i.e. depend on the loop variable, yet being generated by shell  
> > script... I am still testing various possibilities. Although  
> > generating the string inside swift would've been much easier.
> >
> > On Jul 27, 2007, at 2:20 PM, Ian Foster wrote:
> >
> >> Could you not handle the "cat a set of strings" case via a call to  
> >> a shell script or other program that does this?
> >>
> >> Ian
> >>
> >>
> >> Sent via BlackBerry from T-Mobile
> >>
> >> -----Original Message-----
> >> From: Veronika Nefedova <nefedova at mcs.anl.gov>
> >>
> >> Date: Fri, 27 Jul 2007 11:09:19
> >> To:Mihael Hategan <hategan at mcs.anl.gov>
> >> Cc:swift-devel at ci.uchicago.edu
> >> Subject: Re: [Swift-devel] loops and strings
> >>
> >>
> >> 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
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>
> >> _______________________________________________
> >> Swift-devel mailing list
> >> Swift-devel at ci.uchicago.edu
> >> http://mail.ci.uchicago.edu/mailman/listinfo/swift-devel
> >>
> >
> > _______________________________________________
> > Swift-devel mailing list
> > Swift-devel at ci.uchicago.edu
> > http://mail.ci.uchicago.edu/mailman/listinfo/swift-devel
> >
> 
> _______________________________________________
> 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