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

Jump to navigation Jump to search
no edit summary
(Fixing 30 grammatical errors whilst reviewing afterwards)
No edit summary
 
Line 143: Line 143:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 += 1) {
     print(waypoints[index]);
     print(waypoints[index]);
}
}
Line 152: Line 152:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 161: Line 161:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 194: Line 194:
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];
var waypoints = [waypoint4]
var waypoints = [waypoint4];
</syntaxhighlight>
</syntaxhighlight>


Line 206: Line 206:
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


var waypoint4 = [wp4, wp4alt, wp4dist, wp4angle, wp4length, wp4id, wp4brg];
var waypoints = [waypoint4];


var waypoint4 = [wp4,wp4alt,wp4dist,wp4angle,wp4length,wp4id, wp4brg];
print(waypoints[0][0]); # contains the data stored in wp4
var waypoints = [waypoint4]
print(waypoints[0][1]); # contains the data stored in wp4alt
 
print(waypoints[0][2]); # contains the data stored in wp4dist
print ( waypoints[0][0] ) # contains the data stored in wp4
print(waypoints[0][3]); # contains the data stored in wp4angle
print ( waypoints[0][1] ) # contains the data stored in wp4alt
print(waypoints[0][4]); # contains the data stored in wp4length
print ( waypoints[0][2] ) # contains the data stored in wp4dist
print(waypoints[0][5]); # contains the data stored in wp4id
print ( waypoints[0][3] ) # contains the data stored in wp4angle
print(waypoints[0][6]); # contains the data stored in wp4brg
print ( waypoints[0][4] ) # contains the data stored in wp4length
print ( waypoints[0][5] ) # contains the data stored in wp4id
print ( waypoints[0][6] ) # contains the data stored in wp4brg
</syntaxhighlight>
</syntaxhighlight>


Line 229: Line 228:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var waypoint4 = [wp4,wp4alt,wp4dist,wp4angle,wp4length,wp4id, wp4brg];
var waypoint4 = [wp4, wp4alt, wp4dist, wp4angle, wp4length, wp4id, wp4brg];
var waypoint5 = [wp5,wp5alt,wp5dist,wp5angle,wp5length,wp5id, wp5brg];
var waypoint5 = [wp5, wp5alt, wp5dist, wp5angle, wp5length, wp5id, wp5brg];
var waypoints = [waypoint4, waypoint5]
var waypoints = [waypoint4, waypoint5];
</syntaxhighlight>
</syntaxhighlight>


Line 237: Line 236:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var waypoint4 = [1,1000,12,22,44,"none", 33];
var waypoint4 = [1, 1000, 12, 22, 44, "none", 33];
var waypoint5 = [2,1500,22,42,14,"none", 133];
var waypoint5 = [2, 1500, 22, 42, 14, "none", 133];
var waypoints = [waypoint4, waypoint5];
var waypoints = [waypoint4, waypoint5];
</syntaxhighlight>
</syntaxhighlight>
Line 246: Line 245:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var waypoints = [
var waypoints = [
[1,1000,12,22,44,"none", 33],  
    [1, 1000, 12, 22, 44, "none", 33],
[2,1500,22,42,14,"none", 133]
    [2, 1500, 22, 42, 14, "none", 133],
];
];
</syntaxhighlight>
</syntaxhighlight>
Line 254: Line 253:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 261: Line 260:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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][1]) # prints 1000
print(waypoints[0][0]); # prints 1
print(waypoints[1][0]) # prints 2
print(waypoints[0][1]); # prints 1000
print(waypoints[1][1]) # prints 1500
print(waypoints[1][0]); # prints 2
print(waypoints[1][1]); # prints 1500
</syntaxhighlight>
</syntaxhighlight>


Line 272: Line 272:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
# these are used self-explanatory indices - so that you don't need to remember each field's position:
# these are used self-explanatory indices - so that you don't need to remember each field's position:
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 284: Line 291:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]
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]];


# 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 296: Line 310:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]]
var ALTITUDE = 1;
print(waypoints[0][ALTITUDE]) # prints 1
var DISTANCE = 2;
print(waypoints[0][DISTANCE]) # prints 1000
var ANGLE = 3;
print(waypoints[1][ALTITUDE]) # prints 2
var LENGTH = 4;
print(waypoints[1][DISTANCE]) # prints 1500
var ID = 5;
var BRG = 6;
 
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][DISTANCE]); # prints 1000
print(waypoints[1][ALTITUDE]); # prints 2
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 309: Line 331:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]];
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 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, ALTITUDE)); # prints 1
print( get(0, DISTANCE) ); # prints 1000
print(get(0, DISTANCE)); # prints 1000
print( get(1, ALTITUDE) ); # prints 2
print(get(1, ALTITUDE)); # prints 2
print( get(1, DISTANCE) ); # prints 1500
print(get(1, DISTANCE)); # prints 1500
</syntaxhighlight>
</syntaxhighlight>


Line 332: Line 361:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 waypoints = [[1,1000,12,22,44,"none", 33], [2,1500,22,42,14,"none", 133]];
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 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 388: Line 424:
# declare a new hash named waypoint
# declare a new hash named waypoint
var waypoint = {
var waypoint = {
# add a few fields and assign a value to each field:
    # add a few fields and assign a value to each field:
number:0,
    number: 0,
altitude:0,
    altitude: 0,
distance:0,
    distance: 0,
angle:0,
    angle: 0,
length:0,
    length: 0,
ID:0,
    id: 0,
bearing:0
    bearing: 0,
};
};
</syntaxhighlight>
</syntaxhighlight>
Line 401: Line 437:
which is equivalent to this, more succinct, version:
which is equivalent to this, more succinct, version:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var waypoint = {number:0,altitude:0,distance:0,angle:0,length:0,ID:0,bearing:0};
var waypoint = { number: 0, altitude: 0, distance: 0, angle: 0, length: 0, id: 0, bearing: 0 };
</syntaxhighlight>
</syntaxhighlight>


Line 412: Line 448:
* angle
* angle
* length
* length
* ID
* id
* bearing
* bearing


Line 418: Line 454:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var waypoint = {number:0,altitude:0,distance:0,angle:0,length:0,ID:0,bearing:0};
var waypoint = { number: 0, altitude: 0, distance: 0, angle: 0, length: 0, id: 0, bearing: 0 };
print ( waypoint.number );
 
print ( waypoint.altitude );
print(waypoint.number);
print ( waypoint.distance );
print(waypoint.altitude);
print ( waypoint.angle );
print(waypoint.distance);
print ( waypoint.length );
print(waypoint.angle);
print ( waypoint.ID );
print(waypoint.length);
print ( waypoint.bearing );
print(waypoint.id);
print(waypoint.bearing);
</syntaxhighlight>
</syntaxhighlight>


Line 433: Line 470:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var waypoint = {number:1,altitude:2,distance:3,angle:4,length:5,ID:6,bearing:7};
var waypoint = { number: 1, altitude: 2, distance: 3, angle: 4, length: 5, id: 6, bearing: 7 };
print ( waypoint.number ); # prints 1
 
print ( waypoint.altitude ); # prints 2
print(waypoint.number);   # prints 1
print ( waypoint.distance ); # prints 3
print(waypoint.altitude); # prints 2
print ( waypoint.angle ); # prints 4
print(waypoint.distance); # prints 3
print ( waypoint.length ); # 5
print(waypoint.angle);   # prints 4
print ( waypoint.ID ); #6
print(waypoint.length);   # prints 5
print ( waypoint.bearing ); #7
print(waypoint.id);       # prints 6
print(waypoint.bearing); # prints 7
</syntaxhighlight>
</syntaxhighlight>


Line 446: Line 484:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var waypoint1 = {number:1,altitude:2,distance:3,angle:4,length:5,ID:6,bearing:7};
var waypoint1 = { number: 1, altitude: 2, distance: 3, angle: 4, length: 5, id: 6, bearing: 7 };
var waypoint2 = {number:1,altitude:2,distance:3,angle:4,length:5,ID:6,bearing:7};
var waypoint2 = { number: 1, altitude: 2, distance: 3, angle: 4, length: 5, id: 6, bearing: 7 };
var waypoint3 = {number:1,altitude:2,distance:3,angle:4,length:5,ID:6,bearing:7};
var waypoint3 = { number: 1, altitude: 2, distance: 3, angle: 4, length: 5, id: 6, bearing: 7 };
var waypoint4 = {number:1,altitude:2,distance:3,angle:4,length:5,ID:6,bearing:7};
var waypoint4 = { number: 1, altitude: 2, distance: 3, angle: 4, length: 5, id: 6, bearing: 7 };
var waypoint5 = {number:1,altitude:2,distance:3,angle:4,length:5,ID:6,bearing:7};
var waypoint5 = { number: 1, altitude: 2, distance: 3, angle: 4, length: 5, id: 6, bearing: 7 };
</syntaxhighlight>
</syntaxhighlight>


Line 460: Line 498:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var Position3D = {x:1.00, y:2.00, z:3.00};
var Position3D = { x: 1.00, y: 2.00, z: 3.00 };
var p1 = { parents: [Position3D] };
var p1 = { parents: [Position3D] };
var p2 = { parents: [Position3D] };
var p2 = { parents: [Position3D] };
Line 473: Line 511:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var waypoint1 = {number:1,altitude:2,distance:3,angle:4,length:5,ID:6,bearing:7};
var waypoint1 = { number: 1, altitude: 2, distance: 3, angle: 4, length: 5, id: 6, bearing: 7 };
var waypoint2 = {parents:[waypoint1] };
var waypoint2 = { parents: [waypoint1] };
var waypoint3 = {parents:[waypoint1] };
var waypoint3 = { parents: [waypoint1] };
var waypoint4 = {parents:[waypoint1] };
var waypoint4 = { parents: [waypoint1] };
var waypoint5 = {parents:[waypoint1] };
var waypoint5 = { parents: [waypoint1] };
</syntaxhighlight>
</syntaxhighlight>


You could even introduce a new helper function to create new objects, let's call it new_waypoint:
You could even introduce a new helper function to create new objects, let's call it newWaypoint:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var waypoint = {number:1,altitude:2,distance:3,angle:4,length:5,ID:6,bearing:7};
var waypoint = { number: 1, altitude: 2, distance: 3, angle: 4, length: 5, id: 6, bearing: 7 };
var new_waypoint = func() {
var newWaypoint = func() {
return { parents:[waypoint] };
    return { parents: [waypoint] };
}
};


var waypoint1 = new_waypoint();
var waypoint1 = newWaypoint();
var waypoint2 = new_waypoint();
var waypoint2 = newWaypoint();
var waypoint3 = new_waypoint();
var waypoint3 = newWaypoint();
var waypoint4 = new_waypoint();
var waypoint4 = newWaypoint();
var waypoint5 = new_waypoint();
var waypoint5 = newWaypoint();
</syntaxhighlight>
</syntaxhighlight>


Line 500: Line 538:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
# this is our template for new waypoints
# this is our template for new waypoints
var waypoint = {number:1,altitude:2,distance:3,angle:4,length:5,ID:6,bearing:7};
var waypoint = { number: 1, altitude: 2, distance: 3, angle: 4, length: 5, id: 6, bearing: 7 };


# this is our allocator function creating new waypoints
# this is our allocator function creating new waypoints
var new_waypoint = func {return {parents:[waypoint] };}
var newWaypoint = func { return { parents: [waypoint] }; };


var waypoints = [nil,nil,nil,nil,nil]; # initialize the vector to set its size
var waypoints = [nil, nil, nil, nil, nil]; # initialize the vector to set its size


# populate the waypoints vector by allocating one new waypoint per "slot"
# populate the waypoints vector by allocating one new waypoint per "slot"
waypoints[0] = new_waypoint();
waypoints[0] = newWaypoint();
waypoints[1] = new_waypoint();
waypoints[1] = newWaypoint();
waypoints[2] = new_waypoint();
waypoints[2] = newWaypoint();
waypoints[3] = new_waypoint();
waypoints[3] = newWaypoint();
waypoints[4] = new_waypoint();
waypoints[4] = newWaypoint();
</syntaxhighlight>
</syntaxhighlight>


Line 518: Line 556:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var waypoint = {number:1,altitude:2,distance:3,angle:4,length:5,ID:6,bearing:7};
var waypoint = { number: 1, altitude: 2, distance: 3, angle: 4, length: 5, id: 6, bearing: 7};
var new_waypoint = func {return {parents:[waypoint] };}
var newWaypoint = func { return { parents: [waypoint] }; };


var NUM_ELEMENTS = 5;
var NUM_ELEMENTS = 5;
Line 525: Line 563:
setsize(waypoints, NUM_ELEMENTS);
setsize(waypoints, NUM_ELEMENTS);


forindex(var i; waypoints)
forindex (var i; waypoints) {
     waypoints[i] = new_waypoint();
     waypoints[i] = newWaypoint();
}
</syntaxhighlight>
</syntaxhighlight>


Line 541: Line 580:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 555: Line 594:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 573: Line 612:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 593: Line 632:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var make_waypoint = func {
var make_waypoint = func {
     return { parents:[waypoint] };
     return { parents: [waypoint] };
}
};
</syntaxhighlight>
</syntaxhighlight>


Line 601: Line 640:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 629: Line 668:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var namehash = {};
var namehash = {};
namehash["value1"]= 1;
namehash["value1"] = 1;
namehash["value2"] =2;
namehash["value2"] = 2;


foreach(var hash_key ; keys(namehash))
foreach (var hashKey ; keys(namehash)) {
     print(namehash[hash_key]);
     print(namehash[hashKey]);
}
</syntaxhighlight>
</syntaxhighlight>


Line 642: Line 682:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var new = func(obj) {
var new = func(obj) {
     return {parents:obj};
     return { parents: obj };
}
};
</syntaxhighlight>
</syntaxhighlight>


Line 649: Line 689:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var p = new( [Position3D] );
var p = new([Position3D]);
</syntaxhighlight>
</syntaxhighlight>


Line 656: Line 696:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var new = func {
var new = func {
     return {parents:arg};
     return { parents: arg };
}
};


var Position3D = {x:0.0, y:0.0, z:0.0};
var Position3D = { x: 0.0, y: 0.0, z: 0.0 };


var p = new( Position3D );
var p = new(Position3D);
</syntaxhighlight>
</syntaxhighlight>


Line 670: Line 710:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
var new = func(classes...) {
var new = func(classes...) {
     return {parents:classes};
     return { parents: classes };
}
};


var Position3D = {x:0.0, y:0.0, z:0.0};
var Position3D = { x: 0.0, y: 0.0, z: 0.0 };


var p = new( Position3D );
var p = new(Position3D);
</syntaxhighlight>
</syntaxhighlight>


Line 687: Line 727:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
# a new function with an implicit arg parameter that simply returns a new hash with the parents' field set to all arguments provided
# a new function with an implicit arg parameter that simply returns a new hash with the parents' field set to all arguments provided
var new = func return { parents:arg };
var new = func return { parents: arg };


var Position3D = {x:0.0, y:0.0, z:0.0};
var Position3D = { x: 0.0, y: 0.0, z: 0.0 };


var p = new( Position3D );
var p = new(Position3D);
</syntaxhighlight>
</syntaxhighlight>


Line 701: Line 741:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 723: Line 763:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 745: Line 785:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
     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 755: Line 795:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 769: Line 809:
     show_number: func {
     show_number: func {
         print(me.number);
         print(me.number);
     }
     },
};
};
</syntaxhighlight>
</syntaxhighlight>
Line 778: Line 818:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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 792: Line 832:
};
};


var waypoints = [waypoint.new(), waypoint.new(), waypoint.new(), waypoint.new(), waypoint.new() ];
var waypoints = [waypoint.new(), waypoint.new(), waypoint.new(), waypoint.new(), waypoint.new()];
</syntaxhighlight>
</syntaxhighlight>


Line 800: Line 840:
waypoints[0].bearing = 100;
waypoints[0].bearing = 100;
waypoints[1].altitude = 100;
waypoints[1].altitude = 100;
waypoints[2].ID = "none";
waypoints[2].id = "none";
</syntaxhighlight>
</syntaxhighlight>


Line 807: Line 847:
<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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);
     }
     },
};
};


var waypoints = [waypoint.new(), waypoint.new(), waypoint.new(), waypoint.new(), waypoint.new(), ];
var waypoints = [waypoint.new(), waypoint.new(), waypoint.new(), waypoint.new(), waypoint.new()];


foreach(var w; waypoints) {
foreach (var w; waypoints) {
     w.dump();
     w.dump();
}
}
</syntaxhighlight>
</syntaxhighlight>


Line 835: Line 874:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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);
Line 868: Line 907:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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);
Line 880: Line 919:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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);
Line 892: Line 931:


<syntaxhighlight lang="nasal">
<syntaxhighlight lang="nasal">
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);
1,330

edits

Navigation menu