小编Exa*_*Box的帖子

Rx Observable可以优雅地处理运算符中的异常并继续吗?

即,通过传递错误条件而不是停止整个Observable?

My Observable以用户提供的常用送货服务(FedEx,UPS,DHL等)包裹追踪号码列表开始,在线查找预计送达日期,然后按照今天的天数返回这些日期(即"在3天"而不是"1月22日").问题是如果任何单个查找导致异常,整个流将停止,其余代码将不会被查找.例如,没有能力优雅地处理,UnknownTrackingCode Exception因此Observable不能保证它会查找用户提交的所有代码.

public void getDaysTillDelivery(List<String> tracking_code_list) {
        Observable o = Observable.from(tracking_code_list)
                   // LookupDeliveryDate performs network calls to UPS, FedEx, USPS web sites or APIs
                   // it might throw: UnknownTrackingCode Exception, NoResponse Exception, LostPackage Exception
                .map(tracking_code -> LookupDeliveryDate(tracking_code))
                .map(delivery_date -> CalculateDaysFromToday(delivery_date));
        o.subscribe(mySubscriber); // will handle onNext, onError, onComplete
}
Run Code Online (Sandbox Code Playgroud)

由于一个错误而停止Observable流是设计的:

可以克服默认行为,但只能首先消除Rx的许多好处:

  • 我可以换行,LookupDeliveryDate所以它返回Dates代替Exceptions(例如1899-12-31for UnknownTrackingCode Exception)但这可以防止"松散耦合的代码",因为CalculateDaysFromToday需要处理这些特殊情况
  • 我可以使用try/catch和阻止每个匿名函数,但这实际上阻止我使用lambdas
  • 我可以if/thens用来指导代码路径,但这可能需要维护一些状态并消除确定性评估
  • 显然,错误处理每个步骤会阻止整合所有错误处理 Subscriber …

reactive-programming system.reactive rx-java

8
推荐指数
1
解决办法
1812
查看次数

SECURITY DEFINER - 功能创建者或所有者的特权?

Postgres的官方文档表明,使用SECURITY DEFINER定义的函数以创建它的用户的权限运行.

然而,其他来源,例如此处此处,声称它是该功能所有者的特权.

哪个是对的?

(适用于9.4+)

postgresql execute database-security postgresql-9.4

8
推荐指数
1
解决办法
3651
查看次数

jupyter笔记本:再次显示seaborn情节

尝试在 Jupyter 笔记本中构建 seaborn FacetGrid 绘图。创建后,它显示得很好。但如果我操纵图表并想再次查看它,我就不能了。我只能获取对象列表。

如何再次显示图表?

在此输入图像描述

python matplotlib facet seaborn jupyter-notebook

2
推荐指数
1
解决办法
2538
查看次数

以类为键的 Kotlin 地图?

我有一个Vehicle带有实现Car、、等Motorcycle的接口。Skateboard

我想创建一个Map包含每个实现的属性或数据值的。一个非常简单的看起来像:

val vehicleInfo : Map<KClass<Vehicle>, Map<String, String>> mapOf(
  Car::class to mapOf("wheels" to "4", "license_required" to "true"),
  Motorcycle::class to mapOf("wheels" to "2", "license_required" to "true"),
  Skateboard::class to mapOf("wheels" to "4", "license_required" to "false"),
)
Run Code Online (Sandbox Code Playgroud)

但这不会编译,因为Type Mismatch(在KClass键 和之间KClass<Vehicle>

(类似的可能性是使用地图值的数据类data class(val wheels : Int, val license_required : Boolean):)

有没有办法创建一个以类为键的 Map?或者,是否有更好的模式来在类和属性之间创建 1-1 映射(我不想说“属性”,因为显然,我可以将它们定义为接口中的属性,并在每个类定义中提供值 - - 我特别不想这样做,我想将所有属性保留在自己的 Map 或其他数据结构中)...似乎某些函数式编程概念或高阶函数可能适用于此。谢谢。

reflection functional-programming higher-order-functions kotlin

2
推荐指数
1
解决办法
3652
查看次数