问题标签 [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 投票
1 回答
205 浏览

scala - 使用 orElse 的 PartialFunctions 组合的 MatchError

在为 Actor 编写 Specs2 规范时,我MatchError对几个部分函数的组合感到有些困惑。

一个最小的例子:

导致输出:

这完全让我困惑。如果对于一个给定的输入isDefinedAt组成的两个偏函数返回true,我希望我也可以将apply它返回到相同的输入。

0 投票
1 回答
192 浏览

scala - Is there something like Map.keySet for a partial function in scala?

More specifically, I have:

I use it like this:

Of course, this is somewhat simplified, but the report function is necessary.

Some history: I first had it implemented using Map but then I changed it to PartialFunction in order to support the following override def myMap: MethodMap = if (one) map1 else map2.

Any suggestion to refactor my code to support everything is also appreciated.

0 投票
1 回答
245 浏览

regex - Scala正则表达式+部分函数不适用性能

假设我有如下代码:

pf有方法isDefinedAtapply. 正则表达式搜索是否会被评估一次,isDefinedAt或者这项工作将被完成两次?

如果一次,如何将参数g1, g2传递给apply方法?

0 投票
2 回答
134 浏览

scala - Scala中莫名其妙的理解结果

我理解 for-expression 被翻译成 map 和 flatMap。但我发现了一些我无法解释的东西,需要你的帮助。以下是两个玩具示例:

Q1:为什么 Some(1) 映射到 0 ?我期待列表(0),

update1:
​​感谢@marios 的评论,这更奇怪。
for(None <- List(Some(1), None) ) yield None返回List(Some(1), None)

update2:
有人说它是一个变量,但在 IDE 中,它确实链接到一个None对象。


我使用 IntelliJ 将上述 for 表达式自动翻译为 map 表达式:

Q2:这个映射表达式的错误是预期的,而第一个问题中的 for 表达式没有给我这个错误。为什么他们得到不同的计算?

0 投票
2 回答
257 浏览

scala - Scala:参数中带有 PartialFunction 的重载函数

我在尝试使用部分函数重载函数时遇到了一个奇怪的问题:

我已将此代码粘贴到 REPL 中,但出现了一个奇怪的错误:

我在网上查了一下,发现这个错误有不同的解释,但没有人谈论重载。据我了解, PartialFunction 扩展为匿名函数。所以在这种情况下,这将导致类似:

但是一旦粘贴到 REPL 中,我就会收到另一个错误:

这很好,因为没有签名在参数中采用匿名函数。那么我错过了什么?我是否错误地扩展了部分函数?

感谢您的任何帮助 !

编辑

我刚刚发现问题可能来自关于应该调用哪种方法的歧义:

其次,我在这里发现了一个有趣的类似问题

0 投票
1 回答
260 浏览

scala - Scala PartialFunction Stackoverflow

我正在开发一个名为 PySpark Cassandra 的 Scala / Python 库。在其中,例如保存数据时,我必须以pickle格式处理对象序列化的Python对象。

我有一份因stackoverfow而失败的工作:

启动此跟踪的代码是:

位于https://github.com/TargetHolding/pyspark-cassandra/blob/master/src/main/scala/pyspark_cassandra/Pickling.scala#L118(更多细节和上下文)。

UUIDHolder 类定义为:

(这个类的奇怪构造是为了与 py4j 兼容以及 Python 如何腌制 UUID 对象)

但是我对 Scala 以及 case 块和 PartialFunctions 之间的关系的理解是相当有限的。特别是我的案例块与https://github.com/scala/scala/blob/2.10.x/src/library/scala/PartialFunction.scala#L166的关系(我在 Scala 2.10.5 上运行)

使我的情况恶化:) 我很难始终如一地重现错误。它发生在不同节点上的 Spark 作业中,但并非总是如此。我有一个数据集,在保存该数据集时存在问题。但我无法将其固定到数据集中的特定记录。

在任何情况下,我都不希望使用此代码出现 StackOverflow。任何帮助将不胜感激!

0 投票
1 回答
285 浏览

scala - 将隐式参数传递给 Future.recover

我想将隐式参数传递给我使用的部分recover函数Future

0 投票
2 回答
398 浏览

scala - 在元组字段上应用偏函数,维护元组结构

我有一个PartialFunction[String,String]和一个Map[String,String]。我想在地图值上应用部分函数并收集它适用的条目。即给出:

我想以某种方式结合_._2pf能够做到这一点:

到目前为止,我得到的最好的是:

有没有更好的办法?

0 投票
1 回答
93 浏览

scala - PartialFunction 的适配器

我正在尝试提出一个组合器,它可以让我做这样的事情:

基本上,我有一个Map[String, String], 并且想将它用作带有PartialFunction两个参数的 a - 忽略第二个元素,并将第一个元素用作键。

上面的方法有效,但我不喜欢pf基本上被评估两次的事实(可能没有办法解决这个问题),而且它不是“优雅的”......我想知道我是否有某种组合器不知道那会让我做类似的事情{ _._1 } andThen pf。显然,最后一次尝试不起作用,因为它的结果总是被定义的,并且会在不存在的键上失败,我只是用它来说明我正在寻找的解决方案的理想外观。

想法,有人吗?

0 投票
3 回答
362 浏览

scala - 具有部分应用函数的变量参数

我对以下代码有编译问题。

该示例的灵感来自 com.agical.gsl,它是 swt 的 scala 适配器。我假设它在 scala 2.8 之前使用了 scala 功能。

该错误too many arguments for method apply: (v1: Seq[Int])Seq[Int] in trait Function1与变量参数如何传递给部分应用的函数有关。

感谢您提供的任何提示。