나는 C#에서 RX로 프로그램하고 이제는 rxcpp로 C++로 프로그래밍하고 싶습니다. 가장 간단한 작업을 수행하려고합니다. 클래스 멤버 변수를 observable<int>
으로 정의하십시오.rxcpp 간단하게 관찰 가능 <int>
template<class T, class SourceOperator>
class observable
SourceOperator
무엇인가
문제로 observable
가 정의되어있다?
간단한 observable<int>
은 어떻게 정의합니까?
template<class T, class Source>
observable<T> make_observable_dynamic(Source&& s) {
return observable<T>(dynamic_observable<T>(std::forward<Source>(s)));
}
내가 반환 유형으로 observale<T>
을 찾을 수 있지만, 그 정의를 찾을 수 없습니다 :
너무 이상합니다. 나는 내가 C++ 11 \ 14 & 메타 프로그래밍이 ... 분명히 토끼 구멍이
업데이트 1 :-(훨씬 더 깊은 얻을 수있는 매우 능숙 나는 정직하지만 :
observale<T>
가 :-) 발견 된 그 rx-predef.hpp :
template<class T = void,
class SourceObservable = typename std::conditional<std::is_same<T,void>::value,
void,
dynamic_observable<T>>::type>
class observable;
ok 내 현재의 추측은 dynamic_observable
은 '보통'observable<T>
이 동적 인 유형이 증가한 T 스트림임을 의미합니다. 명시 적 유형의 변수로만 유형 삭제 스트림을 sotre 할 수 있으므로 논리적입니다. template<class T, class SourceOperator> class observable
의 구문을 사용하면 'decorator' pattern (컴파일 타임 데코레이션)에 다른 관찰 가능 항목과 결합 된 관찰 가능 유형을 만들 수 있다는 다음 추측으로 이어집니다. 예시 here
이상한 일입니다. [github] (https://github.com/Reactive-Extensions/RxCpp) 페이지의 예제는'SourceOperator'를 지정하지 않고 여러 변수를 정의합니다 : 'observable'및 'observable '. –
Rakete1111
이 문서의 문서는 정말 짜증납니다. http://reactive-extensions.github.io/RxCpp/classrxcpp_1_1observable.html#details는 의미가 무엇인지 설명하지 않고 모든 곳에서'SourceOperator '를 사용합니다. 확실히 개인 장난감 프로젝트의 외부에서 사용할 것이 아닙니다. –
예, 업데이트 1이 맞습니다! C++에서 기본값은 컴파일러가 전체 정적 유형을보고 성능을 위해 모든 연산자를 축소하는 것입니다. SourceOperator는 일반 관찰 가능 유형에 의해 유지되는 관찰 가능 항목의 전체 유형입니다. 관측 가능 객체에 대한 as_dynamic() 메소드는 유형 지움 된 관측 값을 반환합니다. 이는 가상 함수 호출 오버 헤드와 디폴트가 피하는 힙 할당 오버 헤드를 부과합니다. –