Цитата:
|
Цитата:
test('/***.../', function () { var test = function () { /***/ /*!*/ /**/ // }; equal(test.__doc__, ''); }); |
Цитата:
Цитата:
Цитата:
В Python например, пошли еще дальше, и включили работу с Docstring в REPL. # *.py def function (): ''' Empty function ''' ... ➜ python python> help() help> print function () 'Empty function' |
Цитата:
/\/\*[!*]([\s\S]*?)\*\//:) Она и с флагом g вроде корректно ищет. |
Цитата:
|
Цитата:
function F(args, body) { return new Function(args, "return " + body); } array.map(F("x", "x * x")); array.filter(F("x", "x % 2")); array.sort(F("a, b", "Math.sign(a - b)")); if (array.every(F("x", "x === true"))) { … } Но так и не решаюсь использовать в реальном коде из-за предрассудков о кодогенерации :-? |
Цитата:
|
Цитата:
|
Интересно а оправдан ли чем то вот такой подход (просто в голову стукнуло).
Здесь кодогенерация сведена к минимуму, а расходы памяти такие же как если бы все функции были бы объявлены заранее. function F(args, body) { F.cache=F.cache||{}; F.cache[args+body]=F.cache[args+body]||new Function(args, "return " + body); return F.cache[args+body]; } alert(F("x,y","x+y")(1, 2)); |
Кстати IE11 сам умеет оптимизировать, цикл с деятком тысяч итераций вызывает F за несколько миллисекунд, если тело не меняется.
|
Часовой пояс GMT +3, время: 16:52. |