Howto:Start using vectors and hashes in Nasal: Difference between revisions

Jump to navigation Jump to search
m
pedantry: indentation
m (→‎A hash based version (recommended): fix confusing and broken example and add another one)
m (pedantry: indentation)
Line 7: Line 7:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
      var wp1 = 0;
var wp1 = 0;
      var wp1alt = 0;
var wp1alt = 0;
      var wp1dist = 0;
var wp1dist = 0;
      var wp1angle = 0;
var wp1angle = 0;
      var wp1length = 0;
var wp1length = 0;
      var wp1id = "";
var wp1id = "";
      var wp1brg = 0;
var wp1brg = 0;


      var wp2 = 0;
var wp2 = 0;
      var wp2alt = 0;
var wp2alt = 0;
      var wp2dist = 0;
var wp2dist = 0;
      var wp2angle = 0;
var wp2angle = 0;
      var wp2length = 0;
var wp2length = 0;
      var wp2id = "";
var wp2id = "";
      var wp2brg = 0;
var wp2brg = 0;


      var wp3 = 0;
var wp3 = 0;
      var wp3alt = 0;
var wp3alt = 0;
      var wp3dist = 0;
var wp3dist = 0;
      var wp3angle = 0;
var wp3angle = 0;
      var wp3length = 0;
var wp3length = 0;
      var wp3id = "";
var wp3id = "";
      var wp3brg = 0;
var wp3brg = 0;


      var wp4 = 0;
var wp4 = 0;
      var wp4alt = 0;
var wp4alt = 0;
      var wp4dist = 0;
var wp4dist = 0;
      var wp4angle = 0;
var wp4angle = 0;
      var wp4length = 0;
var wp4length = 0;
      var wp4id = "";
var wp4id = "";
      var wp4brg = 0;
var wp4brg = 0;


      var wp5 = 0;
var wp5 = 0;
      var wp5alt = 0;
var wp5alt = 0;
      var wp5dist = 0;
var wp5dist = 0;
      var wp5angle = 0;
var wp5angle = 0;
      var wp5length = 0;
var wp5length = 0;
      var wp5id = "";
var wp5id = "";
      var wp5brg = 0;
var wp5brg = 0;
</syntaxhighlight>
</syntaxhighlight>


Line 67: Line 67:
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var waypoints = ["wp1","wp2","wp3","wp4","wp5"];
var waypoints = ["wp1","wp2","wp3","wp4","wp5"];
print( waypoints[0] ); # print wp1
print( waypoints[0] ); # print wp1
print( waypoints[1] ); # print wp2
print( waypoints[1] ); # print wp2
print( waypoints[2] ); # print wp3
print( waypoints[2] ); # print wp3
print( waypoints[3] ); # print wp4
print( waypoints[3] ); # print wp4
print( waypoints[4] ); # print wp5
print( waypoints[4] ); # print wp5
</syntaxhighlight>
</syntaxhighlight>


Line 79: Line 79:
var waypoints = ["wp1","wp2","wp3","wp4","wp5"];
var waypoints = ["wp1","wp2","wp3","wp4","wp5"];
for(var index; index < size(waypoints); index=index+1) {
for(var index; index < size(waypoints); index=index+1) {
print(waypoints[index]);
    print(waypoints[index]);
}
}
</syntaxhighlight>
</syntaxhighlight>
Line 88: Line 88:
var waypoints = ["wp1","wp2","wp3","wp4","wp5"];
var waypoints = ["wp1","wp2","wp3","wp4","wp5"];
forindex(var index; waypoints) {
forindex(var index; waypoints) {
print(waypoints[index]);
    print(waypoints[index]);
}
}
</syntaxhighlight>
</syntaxhighlight>
Line 97: Line 97:
var waypoints = ["wp1","wp2","wp3","wp4","wp5"];
var waypoints = ["wp1","wp2","wp3","wp4","wp5"];
foreach(var wpt; waypoints) {
foreach(var wpt; waypoints) {
print(wpt);
    print(wpt);
}
}
</syntaxhighlight>
</syntaxhighlight>
Line 104: Line 104:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var wp4 = 0; # waypoint number
var wp4 = 0;       # waypoint number
var wp4alt = 0; # waypoint altitude
var wp4alt = 0;   # waypoint altitude
var wp4dist = 0; # waypoint distance
var wp4dist = 0;   # waypoint distance
var wp4angle = 0; #waypoint angle
var wp4angle = 0; # waypoint angle
var wp4length = 0; # waypoint length
var wp4length = 0; # waypoint length
var wp4id = "";       # waypoint id
var wp4id = "";   # waypoint id
var wp4brg = 0; # waypoint bearing
var wp4brg = 0;   # waypoint bearing
</syntaxhighlight>
</syntaxhighlight>


Line 120: Line 120:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var wp4 = 0; # waypoint number
var wp4 = 0;       # waypoint number
var wp4alt = 0; # waypoint altitude
var wp4alt = 0;   # waypoint altitude
var wp4dist = 0; # waypoint distance
var wp4dist = 0;   # waypoint distance
var wp4angle = 0; #waypoint angle
var wp4angle = 0; # waypoint angle
var wp4length = 0; # waypoint length
var wp4length = 0; # waypoint length
var wp4id = "";       # waypoint id
var wp4id = "";   # waypoint id
var wp4brg = 0; # waypoint bearing
var wp4brg = 0;   # waypoint bearing


var waypoint4 = [wp4,wp4alt,wp4dist,wp4angle,wp4length,wp4id, wp4brg];
var waypoint4 = [wp4,wp4alt,wp4dist,wp4angle,wp4length,wp4id, wp4brg];
Line 137: Line 137:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var wp4 = 1; # waypoint number
var wp4 = 1;         # waypoint number
var wp4alt = 1000; # waypoint altitude
var wp4alt = 1000;   # waypoint altitude
var wp4dist = 20.4; # waypoint distance
var wp4dist = 20.4; # waypoint distance
var wp4angle = 33.4; #waypoint angle
var wp4angle = 33.4; #waypoint angle
var wp4length = 12; # waypoint length
var wp4length = 12; # waypoint length
var wp4id = "none";       # waypoint id
var wp4id = "none"; # waypoint id
var wp4brg = 122; # waypoint bearing
var wp4brg = 122;   # waypoint bearing




Line 179: Line 179:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]
var waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]
</syntaxhighlight>
</syntaxhighlight>


Line 185: Line 185:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]
var waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]
print(waypoints[0][0]) # prints 1
print(waypoints[0][0]) # prints 1
print(waypoints[0][1]) # prints 1000
print(waypoints[0][1]) # prints 1000
print(waypoints[1][0]) # prints 2
print(waypoints[1][0]) # prints 2
print(waypoints[1][1]) # prints 1500
print(waypoints[1][1]) # prints 1500
</syntaxhighlight>
</syntaxhighlight>


Line 195: Line 195:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var NUMBER=0; var ALTITUDE=1; var DISTANCE=2; var ANGLE=3; var LENGTH=4; var ID=5; var BRG=6;
var NUMBER=0; var ALTITUDE=1; var DISTANCE=2; var ANGLE=3; var LENGTH=4; var ID=5; var BRG=6;
var waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]
var waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]
print(waypoints[0][ALTITUDE]) # prints 1
print(waypoints[0][ALTITUDE]) # prints 1
print(waypoints[0][DISTANCE]) # prints 1000
print(waypoints[0][DISTANCE]) # prints 1000
print(waypoints[1][ALTITUDE]) # prints 2
print(waypoints[1][ALTITUDE]) # prints 2
print(waypoints[1][DISTANCE]) # prints 1500
print(waypoints[1][DISTANCE]) # prints 1500
</syntaxhighlight>
</syntaxhighlight>


Line 206: Line 206:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var NUMBER=0; var ALTITUDE=1; var DISTANCE=2; var ANGLE=3; var LENGTH=4; var ID=5; var BRG=6;
var NUMBER=0; var ALTITUDE=1; var DISTANCE=2; var ANGLE=3; var LENGTH=4; var ID=5; var BRG=6;
var waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]
var waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]


# print the altitude for each waypoint in the vector:
# print the altitude for each waypoint in the vector:
foreach(var waypoint; waypoints) {
foreach(var waypoint; waypoints) {
  print( waypoint[ALTITUDE] );
    print( waypoint[ALTITUDE] );
}
}
</syntaxhighlight>
</syntaxhighlight>


Line 218: Line 218:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var NUMBER=0; var ALTITUDE=1; var DISTANCE=2; var ANGLE=3; var LENGTH=4; var ID=5; var BRG=6;
var NUMBER=0; var ALTITUDE=1; var DISTANCE=2; var ANGLE=3; var LENGTH=4; var ID=5; var BRG=6;
var waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]
var waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]
print(waypoints[0][ALTITUDE]) # prints 1
print(waypoints[0][ALTITUDE]) # prints 1
print(waypoints[0][DISTANCE]) # prints 1000
print(waypoints[0][DISTANCE]) # prints 1000
print(waypoints[1][ALTITUDE]) # prints 2
print(waypoints[1][ALTITUDE]) # prints 2
print(waypoints[1][DISTANCE]) # prints 1500
print(waypoints[1][DISTANCE]) # prints 1500


append(waypoints, [3,3000,122,212,34,"none", 133] );
append(waypoints, [3,3000,122,212,34,"none", 133] );
</syntaxhighlight>
</syntaxhighlight>


Line 231: Line 231:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var NUMBER=0; var ALTITUDE=1; var DISTANCE=2; var ANGLE=3; var LENGTH=4; var ID=5; var BRG=6;
var NUMBER=0; var ALTITUDE=1; var DISTANCE=2; var ANGLE=3; var LENGTH=4; var ID=5; var BRG=6;
var waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]
var waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]


var get = func (n,what) {
var get = func (n,what) {
  return waypoints[n][what];
    return waypoints[n][what];
}
}


var set = func (n,what,value) {
var set = func (n,what,value) {
  waypoints[n][what]=value;
    waypoints[n][what]=value;
}
}
 
print( get(0, ALTITUDE)  ) # prints 1
print( get(0, DISTANCE)  ) # prints 1000
print( get(1, ALTITUDE)  ) # prints 2
print( get(1, DISTANCE)  ) # prints 1500


print( get(0, ALTITUDE)  ) # prints 1
print( get(0, DISTANCE)  ) # prints 1000
print( get(1, ALTITUDE)  ) # prints 2
print( get(1, DISTANCE)  ) # prints 1500
</syntaxhighlight>
</syntaxhighlight>


Line 255: Line 254:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var NUMBER=0; var ALTITUDE=1; var DISTANCE=2; var ANGLE=3; var LENGTH=4; var ID=5; var BRG=6;
var NUMBER=0; var ALTITUDE=1; var DISTANCE=2; var ANGLE=3; var LENGTH=4; var ID=5; var BRG=6;
var waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]
var waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]


var get = func (n,what) {
var get = func (n,what) {
  return waypoints[n][what];
    return waypoints[n][what];
}
}


var set = func (n,what,value) {
var set = func (n,what,value) {
  waypoints[n][what]=value;
    waypoints[n][what]=value;
}
}


var get_alt = func(n) {
var get_alt = func(n) {
  return get(n,ALTITUDE);
    return get(n,ALTITUDE);
}
}


var get_dist = func(n) {
var get_dist = func(n) {
  return get(n,DISTANCE);
    return get(n,DISTANCE);
}
}


var get_angle = func(n) {
var get_angle = func(n) {
  return get(n,ANGLE);
    return get(n,ANGLE);
}
}


var get_length = func(n) {
var get_length = func(n) {
  return get(n,LENGTH);
    return get(n,LENGTH);
}
}


var get_id = func(n) {
var get_id = func(n) {
  return get(n,ID);
    return get(n,ID);
}
}


var get_brg = func(n) {
var get_brg = func(n) {
  return get(n,BEARING);
    return get(n,BEARING);
}
}
</syntaxhighlight>
</syntaxhighlight>


Line 428: Line 427:


forindex(var i; NUM_ELEMENTS-1)
forindex(var i; NUM_ELEMENTS-1)
waypoints[i] = new_waypoint();
    waypoints[i] = new_waypoint();
</syntaxhighlight>
</syntaxhighlight>


Line 441: Line 440:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var waypoint1 = {  
var waypoint1 = {
number:1,
    number:1,
altitude:2,
    altitude:2,
distance:3,
    distance:3,
angle:4,
    angle:4,
length:5,
    length:5,
ID:6,
    ID:6,
bearing:7
    bearing:7
};
};
</syntaxhighlight>
</syntaxhighlight>
Line 455: Line 454:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var waypoint = {  
var waypoint = {
number:1,
    number:1,
altitude:2,
    altitude:2,
distance:3,
    distance:3,
angle:4,
    angle:4,
length:5,
    length:5,
ID:6,
    ID:6,
bearing:7,
    bearing:7,
hello: func {
    hello: func {
print("Hello");
        print("Hello");
}
    }
};
};
</syntaxhighlight>
</syntaxhighlight>
Line 472: Line 471:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var waypoint = {  
var waypoint = {
number:1,
    number:1,
altitude:2,
    altitude:2,
distance:3,
    distance:3,
angle:4,
    angle:4,
length:5,
    length:5,
ID:6,
    ID:6,
bearing:7,
    bearing:7,
hello: func {
    hello: func {
print("Hello");
        print("Hello");
}
    }
};
};


var w = {parents: [waypoint]};
var w = {parents: [waypoint]};
w.hello();
w.hello();
</syntaxhighlight>
</syntaxhighlight>


Line 493: Line 491:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var make_waypoint = func {
var make_waypoint = func {
  return { parents:[waypoint] };
    return { parents:[waypoint] };
}
}
</syntaxhighlight>
</syntaxhighlight>


Line 503: Line 499:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var waypoint = {  
var waypoint = {
number:1,
    number:1,
altitude:2,
    altitude:2,
distance:3,
    distance:3,
angle:4,
    angle:4,
length:5,
    length:5,
ID:6,
    ID:6,
bearing:7,
    bearing:7,
new: func {
    new: func {
return {parents:[waypoint]}
        return {parents:[waypoint]}
}
    }
};
};
</syntaxhighlight>
</syntaxhighlight>
Line 530: Line 526:
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var new = func {
var new = func {
return {parents:arg};
    return {parents:arg};
}
}


Line 544: Line 540:
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var new = func(classes...) {
var new = func(classes...) {
return {parents:classes};
    return {parents:classes};
}
}


Line 574: Line 570:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var waypoint = {  
var waypoint = {
number:1,
    number:1,
altitude:2,
    altitude:2,
distance:3,
    distance:3,
angle:4,
    angle:4,
length:5,
    length:5,
ID:6,
    ID:6,
bearing:7,
    bearing:7,
new: func {
    new: func {
return {parents:[waypoint]};
        return {parents:[waypoint]};
},
    },
show_number: func {
    show_number: func {
print(me.number);
        print(me.number);
}
    }
};
};
</syntaxhighlight>
</syntaxhighlight>
Line 596: Line 592:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var waypoint = {  
var waypoint = {
number:1,
    number:1,
altitude:2,
    altitude:2,
distance:3,
    distance:3,
angle:4,
    angle:4,
length:5,
    length:5,
ID:6,
    ID:6,
bearing:7,
    bearing:7,
new: func(n) {
    new: func(n) {
return {parents:[waypoint]};
      return {parents:[waypoint]};
},
    },
show_number: func {
    show_number: func {
print(me.number);
        print(me.number);
}
    }
};
};
</syntaxhighlight>
</syntaxhighlight>
Line 618: Line 614:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
new: func(n) {
    new: func(n) {
var t={parents:[waypoint]};
        var t={parents:[waypoint]};
t.number = n;
        t.number = n;
return t;
        return t;
}
}
</syntaxhighlight>
</syntaxhighlight>
Line 628: Line 624:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var waypoint = {  
var waypoint = {
number:1,
    number:1,
altitude:2,
    altitude:2,
distance:3,
    distance:3,
angle:4,
    angle:4,
length:5,
    length:5,
ID:6,
    ID:6,
bearing:7,
    bearing:7,
new: func(n) {
    new: func(n) {
var t={parents:[waypoint]};
        var t={parents:[waypoint]};
t.number = n;
        t.number = n;
return t;
        return t;
},
    },
show_number: func {
    show_number: func {
print(me.number);
        print(me.number);
}
    }
};
};
</syntaxhighlight>
</syntaxhighlight>
Line 651: Line 647:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var waypoint = {  
var waypoint = {
number:1,
    number:1,
altitude:2,
    altitude:2,
distance:3,
    distance:3,
angle:4,
    angle:4,
length:5,
    length:5,
ID:6,
    ID:6,
bearing:7,
    bearing:7,
new: func(n) {
    new: func(n) {
var t={parents:[waypoint]};
        var t={parents:[waypoint]};
t.number = n;
        t.number = n;
return t;
        return t;
},
    },
};
};


Line 680: Line 676:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var waypoint = {  
var waypoint = {
number:1,
    number:1,
altitude:2,
    altitude:2,
distance:3,
    distance:3,
angle:4,
    angle:4,
length:5,
    length:5,
ID:6,
    ID:6,
bearing:7,
    bearing:7,
new: func(n) {
    new: func(n) {
var t={parents:[waypoint]};
        var t={parents:[waypoint]};
t.number = n;
        t.number = n;
return t;
        return t;
},
    },
dump: func {
    dump: func {
print("Altitude:", me.altitude, " distance:", me.distance, " Bearing:", me.bearing);
        print("Altitude:", me.altitude, " distance:", me.distance, " Bearing:", me.bearing);
}
    }
};
};


Line 701: Line 697:


foreach(var w; waypoints) {
foreach(var w; waypoints) {
w.dump();
    w.dump();
}
}


Line 709: Line 705:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var new = func return {parents:arg};
var new = func return {parents:arg};


var propulsion = {horse_power:0};
var propulsion = {horse_power:0};
var vehicle = {tyres:0};
var vehicle = {tyres:0};


# create different propulsion classes:
# create different propulsion classes:
var engine = new(propulsion);
var engine = new(propulsion);
var piston_engine = new (engine);
var piston_engine = new (engine);
var turboprop_engine = new(engine);
var turboprop_engine = new(engine);
var jet_engine = new(engine);
var jet_engine = new(engine);


var car = new(vehicle, propulsion);
var car = new(vehicle, propulsion);
var boat = new(vehicle, propulsion);
var boat = new(vehicle, propulsion);
var airplane = new(vehicle, propulsion);
var airplane = new(vehicle, propulsion);


# seaplane is a new type of vehicle that inherits from the classes boat and airplane
# seaplane is a new type of vehicle that inherits from the classes boat and airplane
var seaplane = new(boat, airplane);
var seaplane = new(boat, airplane);
</syntaxhighlight>
</syntaxhighlight>


Line 742: Line 738:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var new = func return {parents:arg};
var new = func return {parents:arg};
var animal = {eyes:0,ears:0};
var animal = {eyes:0,ears:0};
 
var dog = new(animal);
var dog = new(animal);
var cat = new(animal);
var cat = new(animal);
var bird = new(animal);
var bird = new(animal);
var spider = new(animal);
var spider = new(animal);
</syntaxhighlight>
</syntaxhighlight>


Line 754: Line 750:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var new = func return {parents:arg};
var new = func return {parents:arg};
var animal = {eyes:0,ears:0,legs:0};
var animal = {eyes:0,ears:0,legs:0};
 
var dog = new(animal);
var dog = new(animal);
var cat = new(animal);
var cat = new(animal);
var bird = new(animal);
var bird = new(animal);
var spider = new(animal);
var spider = new(animal);
</syntaxhighlight>
</syntaxhighlight>


Line 766: Line 762:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
var new = func return {parents:arg};
var new = func return {parents:arg};
var leg = {length:0};
var leg = {length:0};
var animal = {eyes:0,ears:0,legs:[] };
var animal = {eyes:0,ears:0,legs:[] };
 
var dog = new(animal);
var dog = new(animal);
var cat = new(animal);
var cat = new(animal);
var bird = new(animal);
var bird = new(animal);
var spider = new(animal);
var spider = new(animal);
</syntaxhighlight>
</syntaxhighlight>


395

edits

Navigation menu