Note that a reasonably big Nasal change just went into SimGear. Melchior had a chance to test it out first, so hopefully not too much will have broken. The documentation for the new syntax is below. There's also been some work done to reduce the memory footprint for strings (store short strings inside the structure), hashes (about a 60% overhead reduction) and function closure objects (about 100 bytes each).
As always, let me know what broke. New syntax: 1. Call-by-name function arguments. You can specify a hash literal in place of ordered function arguments, and it will become the local variable namespace for the called function, making functions with many arguments more readable. Ex: view_manager.lookat(heading:180, pitch:20, roll:0, x:X0, y:Y0, z:Z0, time:now, fov:55); Declared arguments are checked and defaulted as would be expected: it's an error if you fail to pass a value for an undefaulted argument, missing default arguments get assigned, and any rest parameter (e.g. "func(a,b=2,rest...){}") will be assigned with an empty vector. 2. Vector slicing. Vectors (lists) can now be created from others using an ordered list of indexes and ranges. For example: var v1 = ["a","b","c","d","e"] var v2 = v1[3,2]; # == ["d","c"]; var v3 = v1[1:3]; # i.e. range from 1 to 3: ["b","c","d"]; var v4 = v1[1:]; # no value means "to the end": ["b","c","d","e"] var i = 2; var v5 = v1[i]; # runtime expressions are fine: ["c"] var v6 = v1[-2,-1]; # negative indexes are relative to end: ["d","e"] The range values can be computed at runtime (e.g. i=1; v5=v1[i:]). Negative indices work the same way the do with the vector functions (-1 is the last element, -2 is 2nd to last, etc...). 3. Multi-assignment expressions. You can assign more than one variable (or lvalue) at a time by putting them in a parenthesized list: (var a, var b) = (1, 2); var (a, b) = (1, 2); # Shorthand for (var a, var b) (var a, v[0], obj.field) = (1,2,3) # Any assignable lvalue works var color = [1, 1, 0.5]; var (r, g, b) = color; # works with runtime vectors too ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel