Die ECMA Script 4 Arbeitsgruppe legt hier die erste Fassung der erarbeiteten Ziele für ES4 fest. (via henso.com)
Der Entwurf reicht weit und macht mir den Mund wässrig mit Schlagworten wie "echten" Klassen, Interfaces, virtuelle Properties, Auto Setter/Gettermethoden, Vererbung, Types, Functional Types, Packages, optionalem strict, abwärtskompatibel zu ecma3, usw.
Hier ein paar Codebeispiele die mir das Herz aufgehen lassen ;-)
vererbung:
class C {
var val
function f(n) { return n+1 }
}
class BetterC extends C {
var large = 123456 // new value property
override function f(n) { return n*3 } // overridden method property
}
-----------------------------
interfaces:
interface I { function f() }
interface J { function g(n) }
class C implements I, J {
function f() { return "foo" }
function g(n) { return n+2 }
}
---------------------------
type beispiel:
type Point = { x: int, y: int }
beispiel deep type:
type Person = { name:{ last:string, first:string }, born:Date, spouse:* }
------------------
packages:
package org.ecmascript.experiment {
internal var v;
public function f(k) { v += k; return v-1 }
}
import org.ecmascript.experiment.*
f(37) // calls org.ecmascript.experiment.f
-------
multiple catch clauses
try { ... }
catch (exn: EvalError) { ... }
catch (exn: TypeError) { ... }
finally { ... }
----
der härteste und wohl coolste tobak sind iteratoren:
ein beispiel ist folgender iterator welcher die fibonacci-folge repräsentiert:
class Fibber {
i terator function get(deep:boolean = false): IteratorType.<int>
public function next(): int {
[a,b] = [b,a+b]
return a
}
private var a=0, b=1
}
iteratoren können dann z.b. mit for und each verwendet werden: um zum beispiel die fibonacci-folge ausgeben zu lassen reicht ein simples:
for (i in new Fibber) {
print(i);
}
Das leider auch "unendlich" lang laufen würde, da der iterator keine Abbruchbedingung enthält ;-)
Die Entwicklung erleichtert jedenfalls den Einstieg für Programmierer die aus der Java Ecke kommen, enthält aber auch einige wohl recht schwer erlernbare neue Komponenten. Trotzdem freue ich mich - auch in Hinblick auf die Möglichkeiten die sich dadurch evtl. für helma via rhino ergeben können.







Leave a comment