您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

85 行
1.6 KiB

fun println() {
apply(print, __arguments__);
print("\n");
}
var Object = { __name__: #"Object" };
Object.println = fun () { this.print(); print('\n'); this; }
Object.print = fun () {
var proto= this.__proto__;
if (!proto) print(this);
else {
var name= proto.__name__;
if (!name) print(this);
else {
print(name, "{");
var keys= keys(this);
for (var i= 0; i < length(keys); ++i) {
var key= keys[i];
var val= this[key];
if (i) print(", ");
print(" ", key, ": ", val);
}
print(" }");
}
}
this;
}
Object.init = fun () { this; }
Object.new = fun () {
//print("ARGS are ", __arguments__);
var obj= { __proto__ : this };
var init= this.init;
//print("INIT is ", init);
init && invoke(obj, init, __arguments__);
obj;
};
var Point = { __name__: #"Point", __proto__ : Object };
Point.init = fun (x, y) {
this.x = x;
this.y = y;
}
var p = Point.new(3, 4);
Point.new(3, 4).println();
//(`x).__proto__.__proto__ = Object;
//(`x).println();
syntax until (c) b { `(while (!@c) @b) }
x = 0;
until (10 == x) {
print(x++, "\n")
}
syntax foreach (variable, map) block {
`({
var __map= values(@map);
var __len= length(__map);
for (var __idx= 0; __idx < __len; ++__idx) {
var @(variable.key) = __map[__idx];
@block;
}
});
}
m = { zero: 0, one: 1, eight: "viii" };
foreach ( val, m ) { print("VALUE ", val, "\n"); }
Point.foreach = fun (f) { f(this.x); f(this.y); }
p.foreach(fun (x) { println(x); })
// p.foreach (x) { println(x); }