2017-04-01 2 views
0

일반적으로 ReactiveSwift와 FRP에서 새로운 기능을 사용하여 작은 계산기 응용 프로그램을 빌드하려고 시도하고 있습니다.이 같은 반응을 보이는 반응적인 방법을 찾아 냈습니다. 값을 취하는 함수가있는 경우 전달 된 값과 모든 이전 값의 결과를 사용하는 함수를 지속적으로 적용하는 스트림에이 값을 전달하려면 어떻게해야합니까? 예를 들어 정수의 흐름을 어떻게 추가 할 수 있습니까? 샘플 코드는 매우 유용합니다. 당신은 아마 당신이 초기 값과 새 값을 축적하는 기능을 지정할 수 있습니다 scan 연산자에서 살펴 봐야 할이ReactiveSwift를 사용하여 숫자 스트림 추가하기

func apply(_ value: Int) { 
/// sends value to a stream that emits (value + previous values) to its observers 
} 

답변

1

비슷 해요. 이 코드를 확인하지 않은,하지만이 같은 수 있습니다 :

let (signal, observer) = Signal<Int, NoError>.pipe() 

signal 
    .scan(0) { acc, val in acc + val } 
    .observeValues { val in print(val) } 

observer.send(value: 15) // Should print 15 
observer.send(value: 6) // Should print 21 
observer.send(value: 3) // Should print 24 

당신은이 같은 클래스를 래핑 수 (다시,이 테스트를하지 않은 있지만 통해 아이디어를 얻을해야합니다) :

class Adder { 
    public let output: Signal<Int, NoError> 

    private let input: Observer<Int, NoError> 

    init() { 
     let (signal, observer) = Signal<Int, NoError>.pipe() 

     self.input = observer 

     self.output = signal 
      .scan(0) { acc, val in acc + val } 
    } 

    func apply(_ value: Int) { 
     input.send(value: value) 
    } 
}