반응형
[출처 - RxJava 프로그래밍 : 리액티브 프로그래밍 기초부터 안드로이드 까지 한번에]
본 글은 'RxJava 프로그래밍 : 리액티브 프로그래밍 기초부터 안드로이드 까지 한번에' 를 학습하면서 정리한 글입니다
마블다이어그램 참고 - http://reactivex.io/RxJava/javadoc/io/reactivex/Flowable.html#all-io.reactivex.functions.Predicate-
all 함수는 주어진 조건에 100% 맞을 때만 true 값을 발행하고 조건이 맞지 않으면 false를 발행합니다.
마블다이어그램을 보면
모든 데이터가 원이기 때문에 true를 발행합니다.
testCode를 보겠습니다.(CommonUtils와 CommonUtilsk의 내용은 여기에서 확인 할 수 있습니다.)
Java
import io.reactivex.Observable;
import io.reactivex.Single;
public class all_test {
public static void main(String[] args){
String[] data = {"1","2","3","4"};
// Single<Boolean> source = Observable.fromArray(data).map(all_test::getShape).all("BALL"::equals);
Single<Boolean> source = Observable.fromArray(data).all(value -> "BALL".equals(getShape(value)));
source.subscribe(System.out::println);
}
private static String getShape(String obj){
if(obj.equals("")){
return "NO-SHAPE";
}
if(obj.contains("-T")){
return "TRIANGLE";
}
return "BALL";
}
}
Kotlin
import io.reactivex.rxkotlin.toObservable
fun main(){
val data = arrayOf("1", "2", "3", "4")
val source = data.toObservable().map{getShape(it)}.all("BALL"::equals);
// val source =data.toObservable().all { value -> "BALL" == getShape(value) }
source.subscribe{it-> println(it)}
}
private fun getShape(obj: String): String {
if (obj == "") {
return "NO-SHAPE"
}
return if (obj.contains("-T")) {
"TRIANGLE"
} else "BALL"
}
결과
true
결과를 보면 모두 BALL이기 때문에 true 라는 것을 알 수 있습니다. 만일 String 값들 중 한개에 -T를 붙인다면
import io.reactivex.rxkotlin.toObservable
fun main(){
val data = arrayOf("1", "2-T", "3", "4")
val source = data.toObservable().map{getShape(it)}.all("BALL"::equals);
// val source =data.toObservable().all { value -> "BALL" == getShape(value) }
source.subscribe{it-> println(it)}
}
private fun getShape(obj: String): String {
if (obj == "") {
return "NO-SHAPE"
}
return if (obj.contains("-T")) {
"TRIANGLE"
} else "BALL"
}
false
가 되는것을 확인 할 수 있습니다.
반응형
'2023년 이전 > ReativeX' 카테고리의 다른 글
RxJava - 수학관련 함수 (0) | 2020.01.20 |
---|---|
RxJava,RxKotlin - 기타 함수 (0) | 2020.01.19 |
RxJava, RxKotlin - skipUntil 함수 (0) | 2020.01.19 |
RxJava, RxKotlin - takeUntil 함수 (0) | 2020.01.19 |
RxJava, Rxkotlin 관련 CommonUtils와 CommonUtilsk (0) | 2020.01.19 |