рд╕реНрдЯреНрд░реАрдо.рдЬреЗрдПрд╕: рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрд╕реНрдердЧрд┐рдд (рдЖрд▓рд╕реА) рдЧрдгрдирд╛

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп stream.js рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ рдХреА "рдирдИ" 1 рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкрд░рд┐рдЪрдп: рдзрд╛рд░рд╛ред рдпрд╣ рдПрдХ рдРрд╕рд╛ рдХрдВрдЯреЗрдирд░ рд╣реИ рдЬреЛ рдПрдХ рд╕рд░рдгреА рдФрд░ рдПрдХ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдЖрд╕реНрдердЧрд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

var s = Stream.range( 10, 20 ); s.print(); // prints the numbers from 10 to 20 

рдмрд╣рд╕ рдХреЗ рд▓рд┐рдП Stream.range( low, high ) рдЖрдк рдХреЗрд╡рд▓ Stream.range( low ) рд╕реАрдорд╛ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реАрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдирдВрдмрд░ рд╣реЛрдВрдЧреЗред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, Stream.range() 1 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ "рдЕрдирдВрдд" рд╢реНрд░реЗрдгреА рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдо рдФрд░ рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред

 var naturalNumbers = Stream.range(); // naturalNumbers is now 1, 2, 3, ... var evenNumbers = naturalNumbers.map( function ( x ) { return 2 * x; } ); // evenNumbers is now 2, 4, 6, ... var oddNumbers = naturalNumbers.filter( function ( x ) { return x % 2 != 0; } ); // oddNumbers is now 1, 3, 5, ... evenNumbers.take( 3 ).print(); // prints 2, 4, 6 oddNumbers.take( 3 ).print(); // prints 1, 3, 5 

рджрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдирд╛ new Stream( head, functionReturningTail ) рдХреА рдорджрдж рд╕реЗ рд╕рдВрднрд╡ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рддрд░реАрдХрд╛ рд╣реИред

 function ones() { return new Stream( 1, ones ); } function naturalNumbers() { return new Stream( // the natural numbers are the stream whose first element is 1... 1, function () { // and the rest are the natural numbers all incremented by one // which is obtained by adding the stream of natural numbers... // 1, 2, 3, 4, 5, ... // to the infinite stream of ones... // 1, 1, 1, 1, 1, ... // yielding... // 2, 3, 4, 5, 6, ... // which indeed are the REST of the natural numbers after one return ones().add( naturalNumbers() ); } ); } naturalNumbers().take( 5 ).print(); // prints 1, 2, 3, 4, 5 

1 рдкреАрдПрд╕ рдПрдХ рдЖрд╕реНрдердЧрд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреА рдПрдХ рд╕рдорд╛рди рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде, linq.js рдФрд░ рдиреЛрдб-рдЖрд▓рд╕реА рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рдпрд╣ рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП "рдирдИ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛" рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред

CoffeeScript рд╕реНрдЯреНрд░реАрдо .js рд▓рд╛рдЗрдмреНрд░реЗрд░реА: рдХреЙрдлрд╝реАрд╕реНрдЯреНрд░реАрдо ред

Source: https://habr.com/ru/post/In128264/


All Articles