问题标签 [partialfunction]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3034 浏览

scala - 如何将 X => Option[R] 转换为 PartialFunction[X,R]

只要我们有 a PartialFunction[X,R],就很容易将其转换为返回的函数Option[R],例如

但是,如果任务相反怎么办:假设我有一个函数作为参数f获取并作为结果返回。我想从中受益。什么是最好的方法?XOption[R]PartialFunction[X,R]

我想出的东西对我的口味来说看起来很丑:

我错过了一些更好的方法吗?

0 投票
2 回答
1111 浏览

scala - 什么时候scala偏函数不是偏函数?

在创建 String 到部分函数的映射时,我遇到了意外行为。当我创建一个部分函数作为地图元素时,它工作正常。当我分配给一个 val 时,它会调用它。尝试调用检查会产生错误。这是预期的吗?我在做傻事吗?注释掉check()以查看调用。我正在使用 scala 2.7.7

0 投票
1 回答
486 浏览

scala - 如何在子类中实现部分函数

我正在尝试设计几个继承部分函数的类,但我似乎无法完全正确地获得语法。我的超类看起来像这样:

子类看起来像:

但这无法编译并出现此错误

我已经尝试了很多变体,有人知道正确的语法是什么吗?

0 投票
5 回答
4083 浏览

scala - scala的案例保护语句中的变量范围

对于电梯开发,我有时需要使用match-<code>case 语句,如下所示。(重写为普通的 scala 以便于理解。)给他们一个注意事项:这些实际上是不同的部分函数,​​在代码的不同部分中定义,因此 case 语句在守卫中或之前失败很重要,以便获得另一个部分评估的功能(如果匹配失败,即)。

现在,为了知道case语句成功,我必须查询数据库findInDb并检查结果是否有效。之后,我必须再次调用它才能使用该值。

做类似的事情

不起作用,因为 的范围res仅限于大括号内。

我当然可以定义一个var res = _外部并分配给它,但这样做我感觉不好。

是否可以通过任何方式在警卫内声明一个变量?如果有可能,case r@Req(…)为什么不case r@Req() if res@(r.isDefined)呢?

0 投票
2 回答
1110 浏览

scala - 有没有更好的方法在 Scala 中提升 PartialFunction?

我偶尔会遇到以下模式,我基本上有 a PartialFunction[SomeType,AnotherType],并希望将其视为 a Function[SomeType,Option[AnotherType],例如:

有没有办法以一种避免默认情况并将结果包装在定义位置的方式编写上述函数Some?到目前为止,我想出的最好的是:

有没有办法在不定义中间函数的情况下做到这一点?我已经按照以下方式尝试了各种方法,但还没有任何东西可以编译:

0 投票
2 回答
575 浏览

scala - Partial function application prematurely runs codeblock when used with underscore

Given:

I can call it with:

Here's the curious behaviour with partial application:

The codeblock is evaluated immediately without being passed in as a function. What is the difference between the above 2 statements?

0 投票
2 回答
3453 浏览

scala - Scala Option 的 collect 方法不喜欢我的 PartialFunction

我想我错过了一些东西:

为什么会发生此错误?我想我误解了它collect的工作原理......

0 投票
5 回答
4174 浏览

scala - Scala,部分函数

有没有办法通过语句创建一个PartialFunction例外?case

我很好奇,因为我想表达以下内容(scala pseudo ahead!)......

...作为一个部分功能,并做

似乎多余,因为我创建了BigInt两次。

0 投票
1 回答
1053 浏览

scala - 如何使用 PartialFunctions 来编写匹配语句?

考虑以下:

我以为我可以这样做:

但不是。我在这里缺少一些基本的东西吗?我希望我的 PartialFunction 可以在匹配语句中使用和重用。这不可能吗?

0 投票
1 回答
942 浏览

scala - 如何在 Scala 中轻松定义更复杂的 PartialFunction?

偏函数

简而言之,在 Scala 中,aPartialFunction是一个额外定义isDefinedAt方法的函数。

用一系列case语句很容易定义偏函数。一个简单的例子是,例如:

isDefinedAtcase是从定义偏函数的 s 列表中自动生成的。

语境

Lift 框架在很多地方都使用了部分函数,​​例如,定义一个请求是应该由 Lift 的引擎处理还是直接从磁盘上的文件提供服务。有时,我发现自己想编写一个case匹配所有输入参数的语句,然后才决定是否要返回一个值。这意味着cases 的初始序列不再足以确定我的函数是否定义为给定值

例如,在 Lift 中,我想添加一条规则,直接提供所有 html 和 htm 文件,并且应该处理带有“lift”扩展名的文件。做这样的事情看起来很容易:

不幸的是,在这种情况下,编译器认为我的部分函数在任何地方都定义了,因为第一个case总是匹配的。它是嵌套的match,可能不匹配所有传入的请求。并且,是一个请求不匹配,一个MatchError被抛出。

问题

有没有一种简单的方法可以让编译器match在定义部分函数时考虑嵌套语句,或者是唯一的方法来内联所有这样的嵌套条件?

在这个例子中,它在很大程度上是可行的,但是可读性降低了,而且我遇到过内联所有检查看起来非常难看的情况。