[Swift-user] many-to-one mapping

Neil Best nbest at ci.uchicago.edu
Fri Dec 7 10:51:43 CST 2012


Is it possible to declare a mapping within a foreach loop so that
different realizations of that mapping are driven by the loop
parameter?

I tried this:

foreach year in [1979:2011] {
  ncList[ year] = @filenames(
    file foo[]<structured_regexp_mapper;
      source= nc1,
      match= @strcat( "^data/nc/", year, "../narr-a_221_", year,
"...._..00_000.single.nc$");>)
  annual[ year]= cdo( "-O mergetime", ncList[ year]);
  tmin[ year]= cdo( "-O daymin -selname,TMP", @annual[ year]);
  tmax[ year]= cdo( "-O daymax -selname,TMP", @annual[ year]);
  precip[ year]= cdo( "-O daysum -selname,APCP", @annual[ year]);
  solar[ year]= cdo( "-O daymean -selname,DSWRF", @annual[ year]);
}

The idea is that the annual[] files are the product of merging ~3000
3-hour reports.  The set of reports for each year is a subset of all
of the 3-hour reports across all of the years.

I have a feeling that my syntax is not legal where I am trying to work
in terms of first class objects and functional programming, but I am
not sure to what extent Swift can accept these constructs.  Is it
clear what I am trying to do?  Is there an idiom for this?  I don't
see any exmaples where a mapper is parameterized by a variable within
a loop.

Complete listing is here:
https://github.com/RDCEP/narr2wth/blob/master/narr.swift



More information about the Swift-user mailing list