История изменений
Исправление crutch_master, (текущая версия) :
Мне интересны его возможности в метапрограммировании. Вот, я, например, на js накидал:
#!/usr/bin/js
meta = function(fields) {
for (i in fields) {
var f = fields[i];
var self = this;
this[f] = null;
this["get"+f] = function(fi) {return function() {return self[fi];}}(f);
this["set"+f] = function(fi) {return function(v) {self[fi]=v;}}(f);
}
}
function log(s) {console.log(s);}
var m = new meta(["foo", "bar", "baz"]);
log(m.getfoo());
log(m.getbar());
log(m.getbaz());
m.setfoo(5);
m.setbar(3);
m.setbaz(1);
log(m.getfoo());
log(m.getbar());
log(m.getbaz());
//null
//null
//null
//5
//3
//1
Исходная версия crutch_master, :
Мне интересны его возможности в метапрограммировании. Вот, я, например, на js накидал:
#!/usr/bin/js
meta = function(fields) {
for (i in fields) {
var f = fields[i];
var self = this;
this[f] = null;
this["get"+f] = function(fi) {return function() {return self[fi];};}(f);
this["set"+f] = function(fi) {return function(v) {self[fi]=v;}}(f);
}
}
function log(s) {console.log(s);}
var m = new meta(["foo", "bar", "baz"]);
log(m.getfoo());
log(m.getbar());
log(m.getbaz());
m.setfoo(5);
m.setbar(3);
m.setbaz(1);
log(m.getfoo());
log(m.getbar());
log(m.getbaz());
//null
//null
//null
//5
//3
//1