나는 this snake example을 따라 왔으며 비어있는 (즉, 뱀이 아닌) 셀에만 새 사과를 생성하도록 수정했습니다.Bacon.js의 FRP 뱀주기를 깨기
// 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; });
주기를 해결할 수있는 좋은 방법이 있나요 : 새로운 사과를 생성하는 이제 마지막 위치에 있지만 전체 뱀에뿐만 아니라 의존하기 때문에, 즉, Observable 인 사이의 순환 종속성을 도입거야?
이것은 지저분한 상태 기계에서는 작동하지만 클린 FRP에서는 작동하지 않을 것이라고 생각합니다.
내가 하나 개의 스트림으로 apples
및 length
을 병합하고 스트림을하고있다 생각할 수있는 가장 가까운 currentPosition
에서 "currentSnake"
자체를 생성합니다.
applesAndLength --> currentPosition
^ ^
| /
currentSnake
구현에 대해서는별로 생각하지 않았습니다.