Я слежу за this snake example и решил изменить его, чтобы генерировать новые яблоки только в пустых (то есть не змеиных) ячейках. Тем не менее, который ввел циклическую зависимость между наблюдаемыми характеристиками, так как генерировать новые яблоки теперь зависит не только от последней позиции, но и на всей змеи:Нарушение цикла в змее FRP в Bacon.js
// stream of last `length` positions -- snake cells
var currentSnake = currentPosition.slidingWindowBy(length);
// stream of apple positions
var apples = appleStream(currentSnake);
// length of snake
var length = apples.scan(1, function(l) { return l + 1; });
Есть хороший способ решить цикл?
Я могу представить, как это будет работать в грязной машине состояний, но не с чистой FRP.
Ближайший я могу вспомнить, сливающихся apples
и length
в один поток и сделать этот поток генерировать свой собственный "currentSnake"
из currentPosition
.
applesAndLength --> currentPosition
^ ^
| /
currentSnake
Я не очень много думал о реализации.