gpt4 book ai didi

Android RxJava 记住变量

转载 作者:行者123 更新时间:2023-11-29 19:53:15 25 4
gpt4 key购买 nike

我正在学习 RxJava。

我的数据:

  • 字符串变量 - 命令

我的目标:

  • 拆分字符串(空格 作为正则表达式)- 完成
  • 检查数组是否有元素 - 完成
  • 将数组映射到字符串 (foreach) - 完成
  • 重要的事情:拆分后我必须记住我的第一个字符串,因为它在订阅中是必需的
  • 我知道我的第二个字符串是可选的。如果存在则它可能是 json 或常规字符串
  • 我必须知道第二个字符串中的内容(不存在/json/常规字符串)并执行不同的操作(订阅)。

我的代码:

Observable.just(command)
.map(s -> s.split(" "))
.filter(strings -> strings.length > 0)
.flatMap(Observable::from)
// .remember my first string
.skip(1)
.filter(s1 -> s1 != null)
// .handle if s1 == null - it means that 2nd string does not exitst
.map(this::getJson)
// .onErrorResumeNext( * subscribe on that string element*) // regular string
// IF getJson return JSONObject
// .subscribe(jsonObject -> myMethod(firstString, jsonObject))

我的思考方式是否正确?如何正确执行?

最佳答案

当您flatMap 您的String 数组并跳过您的第一个String 时,您将丢失第一个String .

如果您想使用第一个和第二个字符串,则必须同时发出它们。

Observable.just(command)
.map(s -> s.split(" "))
.filter(strings -> strings.length > 0)
.flatMap(arr -> {
// transform the second args as a Json Object
Observable<Object> jsonObject = Observable.from(arr)
.skip(1)
.map(this::getJson);

// get the first String
Observable<String> firstArg = Observable.from(arr)
.take(1);
// call myMethod with the first String and the jsonObject
return Observable.combineLatest(firstArg, jsonObject, (first, second) -> myMethod(first, second))
// call fallback method if you haven't a second arg
.switchIfEmpty(firstArg.map(f -> fallbackMethod(m)));

})
.subscribe();

关于Android RxJava 记住变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36937989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com