table expand fast with rules once ...

Prev Next

Function Names

table expand fast with rules once, table expand fast with rules ignore case once

Description

This function combines the lookup strategy from table expand with rules once() with the data integration features of table expand fast() where the additional rows are added at the end of the table to get the job done more quickly.

Call as: procedure or function

Restrictions

Indirect parameter passing is disabled

Parameter count

6 - 9 (For parameter description and return values: see table expand() )

Examples


  table initialize( animals,
      { { Name,      Size,     Speed,     Movement,  Leg count,  Surface,    Special Skills   },
        { Parrot,    small,    50,        flying,    2,          feathers,   immitates voices },
        { Donkey,    medium,   28,        walking,   4,          hair,       agriculture use  },
        { Dog,       small,    30,        walking,   4,          hair,       sense of smell   },
        { Cat,       small,    20,        walking,   4,          hair,       night vision     },
        { Fox,       small,    25,        walking,   4,          hair,       relatively smart },
        { Owl,       small,    80,        flying,    2,          feathers,   night vision     },
        { Worm,      tiny,     0.01,      crawling,  0,          mucous skin,unclear          },
        { Whale,     huge,     30,        swimming,  0,          skin,       relatively smart } } );

  headers[] = [animals:..,0]-{Name};


  table initialize( target,
          { { Size,     Speed,     Movement,  Leg count,  Surface, Special Skills, Animal, Double Speed   },
            { '*',      ':mod([.],40)=0','*', '*',        '*',     '*',          "It's an", 2  }, // Speed divisible by 40 -> Owl
            { small,    '20..30',  '*',       '*',        Hair,    '*',          "It's a ", 2   }, // Dog, Cat, Fox
            { small,    '20..30',  '*',       '*',        Hair,    '*',          "It's a ", 2   }, // No match (items already found)
            { '*',      '20..30',  '*',       '*',        '*',     '*',          "",        2   } } ); // Donkey and Whale only

  count[] = table expand fast with rules once ignore case ( target, headers[],  {Animal, Movement, Double Speed},
            animals, headers[], {Name,   Movement, Speed},   { append with space, overwrite, mul }, true, Counter );
  // Data integration process: Overwrite movement in target table, Add animal name to 'It's ...' and note double speed.

  echo("List of animals with counted lookups:");
  table list( animals );

  echo("Note: Dog/Cat/Fox can be found only once.  Row 4: Donkey and Whale found (Dog/Cat/Fox already taken)");
  echo("Target table after lookup (", count[], " items found):");
  table list( target );

Output

List of animals with counted lookups:
    0 : Name   | Size   | Speed | Movement | Leg count | Surface     | Special Skills   | Counter
    1 : Parrot | small  | 50    | flying   | 2         | feathers    | immitates voices |        
    2 : Donkey | medium | 28    | walking  | 4         | hair        | agriculture use  | 1      
    3 : Dog    | small  | 30    | walking  | 4         | hair        | sense of smell   | 1      
    4 : Cat    | small  | 20    | walking  | 4         | hair        | night vision     | 1      
    5 : Fox    | small  | 25    | walking  | 4         | hair        | relatively smart | 1      
    6 : Owl    | small  | 80    | flying   | 2         | feathers    | night vision     | 1      
    7 : Worm   | tiny   | 0.01  | crawling | 0         | mucous skin | unclear          |        
    8 : Whale  | huge   | 30    | swimming | 0         | skin        | relatively smart | 1      

Note: Dog/Cat/Fox can be found only once.  Row 4: Donkey and Whale found (Dog/Cat/Fox already taken)
Target table after lookup (6 items found):
    0 : Size  | Speed          | Movement | Leg count | Surface | Special Skills | Animal      | Double Speed
    1 : *     | :mod([.],40)=0 | flying   | *         | *       | *              | It's an Owl | 160         
    2 : small | 20..30         | walking  | *         | Hair    | *              | It's a  Dog | 60          
    3 : small | 20..30         | *        | *         | Hair    | *              | It's a      | 2           
    4 : *     | 20..30         | walking  | *         | *       | *              | Donkey      | 56          
    5 : small | 20..30         | walking  | *         | Hair    | *              | It's a  Cat | 40          
    6 : small | 20..30         | walking  | *         | Hair    | *              | It's a  Fox | 50          
    7 : *     | 20..30         | swimming | *         | *       | *              | Whale       | 60          

Try it yourself: Open LIB_Function_table_expand_fast_with_rules_once.b4p in B4P_Examples.zip. Decompress before use.

See also

table expand fast with rules
table expand with rules once
table expand fast