|
|
От: | vba66a | |
| Дата: | 07.02.18 18:11 | ||
| Оценка: |
|
||
|
|
От: | CreatorCray | |
| Дата: | 07.02.18 18:18 | ||
| Оценка: | |||
|
|
От: |
Hobbes
|
|
| Дата: | 08.02.18 06:21 | ||
| Оценка: |
+1
|
||
Не хочу структуру, хочу любые типы, хочу генератор в map, например, использовать. Что мне с этой структурой делать, лямбду для извлечения значения писать?там переданное в оператор значение отправится наружу внутри специальной структуры, где будет value (наше значение) и done (жив ли еще генератор).
Приехали, конец. То есть я заранее в генераторе должен предусмотреть, какое значение вернётся последним, и написать для этого особую строчку с return?Завершение работы генератора отмечает return. В принципе, его можно не писать, но тогда последнийvalue вернется с undefined.
А если я не напишу return, когда done станет true? Когда вернётся первый undefined? То есть если генератор написан так, то значение с флагом done надо учитывать, а если эдак, то не надо учитывать. Приехали, конец. Или надо смотреть undefined или нет? Тогда зачем done нужен?Когда весь код в теле функции будет выполнен, done станет true
В чём смысл такого синтаксиса? Значение получить можем, но сделать с ним ничего не можем.// 0 is lost
const received = yield 1;
Приехали, конец. Там учитываем, тут не учитываем, не программирование, а хождение по коровьему пастбищу.Значения больше не нужно вытаскивать из поля value, но return при выдаче не учитывается.
|
|
От: | AlexRK | |
| Дата: | 08.02.18 08:32 | ||
| Оценка: | |||
|
|
От: |
Кодт
|
|
| Дата: | 08.02.18 09:53 | ||
| Оценка: | |||
H>Не хочу структуру, хочу любые типы, хочу генератор в map, например, использовать. Что мне с этой структурой делать, лямбду для извлечения значения писать?H>там переданное в оператор значение отправится наружу внутри специальной структуры, где будет value (наше значение) и done (жив ли еще генератор).
function* imap(f, xs) {
for (var x of xs) yield f(x);
}H>Приехали, конец. То есть я заранее в генераторе должен предусмотреть, какое значение вернётся последним, и написать для этого особую строчку с return?H>Завершение работы генератора отмечает return. В принципе, его можно не писать, но тогда последнийvalue вернется с undefined.
function* g() {
yield 1;
yield 2;
return 3;
}
writeln([...g()]); // [1,2] - отсечка произошла по done
var i = g();
function show(t) { return [t.value, t.done]; }
writeln(show(i.next())); // 1,false
writeln(show(i.next())); // 2,false
writeln(show(i.next())); // 3,true - для протокола yield-next можно получить последний содержательный ответ
writeln(show(i.next())); // undefined,true - дальнейшие ответы бессодержательные, генератор упёрся в конецH>А если я не напишу return, когда done станет true? Когда вернётся первый undefined? То есть если генератор написан так, то значение с флагом done надо учитывать, а если эдак, то не надо учитывать. Приехали, конец. Или надо смотреть undefined или нет? Тогда зачем done нужен?H>Когда весь код в теле функции будет выполнен, done станет true
H>В чём смысл такого синтаксиса? Значение получить можем, но сделать с ним ничего не можем.H>// 0 is lost
H>const received = yield 1;
H>Приехали, конец. Там учитываем, тут не учитываем, не программирование, а хождение по коровьему пастбищу.H>Значения больше не нужно вытаскивать из поля value, но return при выдаче не учитывается.
Перекуём баги на фичи!
|
|
От: |
anton_t
|
|
| Дата: | 08.02.18 09:55 | ||
| Оценка: | |||
|
|
От: |
Hobbes
|
|
| Дата: | 08.02.18 10:39 | ||
| Оценка: | |||
К>function* g() {
К> yield 1;
К> yield 2;
К> return 3;
К>}
К>writeln([...g()]); // [1,2] - отсечка произошла по done
К>var i = g();
К>function show(t) { return [t.value, t.done]; }
К>writeln(show(i.next())); // 1,false
К>writeln(show(i.next())); // 2,false
К>writeln(show(i.next())); // 3,true - для протокола yield-next можно получить последний содержательный ответ
К>writeln(show(i.next())); // undefined,true - дальнейшие ответы бессодержательные, генератор упёрся в конец
К>|
|
От: |
pugv
|
|
| Дата: | 12.02.18 11:15 | ||
| Оценка: | |||
Далеко нам до его уровня, в общем.Интернет-деятелем, программистом, публицистом, лектором, консультантом-мемологом