Rhino 1.7R1pre
ftp://ftp.mozilla.org/pub/js/rhino1_7R1pre.zip
試してみた。
Generator
print(primes = (function(){ yield 2; for(var n = 3;; n += 2){ for(var d = 3, m = Math.sqrt(n), f; d < m && n % d; d += 2); if(d >= m) yield n; } })(), uneval(primes)); print((1e19+'').split('').map(function(){ return primes.next() }));
[object Generator] ({}) 2,3,5,7,9,11,13,17,19,23,25,29,31,37,41,43,47,49,53,59
ふむふむ。
Array comprehension
primes = function(max){ yield 2; for(var n = 3; n < max; n += 2){ for(var d = 3, m = Math.sqrt(n), f; d < m && n % d; d += 2); if(d >= m) yield n; } }; print([i for(i in primes(67)) if(i >= 23)]);
23,25,29,31,37,41,43,47,49,53,59,61,67
おおー。
let
x = 5, y = 0;
let(x = x + 10, y = 12) print(x + y);
print(x + y);
27 5
微妙。
x = 5, y = 0; with({x: x + 10, y: 12}) print(x + y); print(x + y);
こう書いても同じだし。
Destructuring assignment
print([a, b, c, d, e] = (function(min, max){ function fib(max) { for(var i = 1, j = 1; i <= max;){ yield i; [i, j] = [j, i + j]; } } return [f for(f in fib(max)) if(f >= min)]; })(100, 1000)); print(a, b, c, d, e);
144,233,377,610,987 144 233 377 610 987
これは素晴らしい。