相关疑难解决方法(0)

你什么时候在RxJava中使用map vs flatMap?

你什么时候在RxJava中使用map vs flatMap?

比方说,我们想将包含JSON的文件映射到包含JSON的字符串中 -

使用map,我们必须以某种方式处理Exception.但是如何?:

Observable.from(jsonFile).map(new Func1<File, String>() {
    @Override public String call(File file) {
        try {
            return new Gson().toJson(new FileReader(file), Object.class);
        } catch (FileNotFoundException e) {
            // So Exception. What to do ?
        }
        return null; // Not good :(
    }
});
Run Code Online (Sandbox Code Playgroud)

使用flatMap,它更加冗长,但我们可以将问题转发到Observables链中,如果我们选择其他地方甚至重试,则可以处理错误:

Observable.from(jsonFile).flatMap(new Func1<File, Observable<String>>() {
    @Override public Observable<String> call(final File file) {
        return Observable.create(new Observable.OnSubscribe<String>() {
            @Override public void call(Subscriber<? super String> subscriber) {
                try {
                    String json = new Gson().toJson(new FileReader(file), Object.class);

                    subscriber.onNext(json);
                    subscriber.onCompleted();
                } …
Run Code Online (Sandbox Code Playgroud)

java mapping rx-java flatmap

172
推荐指数
8
解决办法
10万
查看次数

Functor和Monad有什么区别?

这里有类似的问题,但它们附加到特定的编程语言,我正在寻找概念层面的答案.

据我所知,Functors本质上是不可变的容器,它暴露了map() API,派生出另一个仿函数.哪个添加可以将特定的仿函数称为monad?

据我所知,每个monad都是一个仿函数,但不是每个仿函数都是monad.

monads functional-programming functor

13
推荐指数
2
解决办法
3284
查看次数

Swift 1.2中可选展开的Map和flatMap差异

双方mapflatMap都defind上ImplicitlyUnwrappedOptional,但他们根据不同的文件(显然)在他们的定义:

func map(f:@noescape(T) - > U) - > U!

如果self == nil,则返回nil.否则,返回f(self!).

func flatMap(f:@noescape(T) - > U!) - > U!

返回f(自我)!iff self和f(self)不是nil.

我尝试使用它们的一个简单示例:

let number: Int? = 1

let res1 = number.map { $0 + 1 }.map { $0 + 1 }
let res2 = number.flatMap { $0 + 1 }.flatMap { $0 + 1 }

res1 //3
res2 //3
Run Code Online (Sandbox Code Playgroud)

但是,他们生产的相同的结果,即使numbernil. 我的问题是,它们之间有什么实际的区别,如果我申请mapflatMapImplicitlyUnwrappedOptionalS' 我应该选择哪一个以及何时?

dictionary bind optional flatmap swift

3
推荐指数
2
解决办法
2549
查看次数