问题标签 [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 回答
525 浏览

scala - Scala Currying:部分函数用空参数覆盖函数

我正在尝试通过使用部分函数来实现/覆盖具有空输入参数的函数。这个不起作用的最小示例最好地解释了这一点:

编译器抱怨:object creation impossible, since method build in trait TFactory of type ()T is not defined,这是有道理的,因为构建的类型是(Int)()T. 我的下一个想法是build明确地使函数的类型接受一个空参数并返回 a T,即:

现在很明显 的类型build() => T。令我惊讶的是,编译器现在抱怨object creation impossible, since method build in trait TFactory of type => () => T is not defined(注意类型突然以 a 开头=>)。在函数定义的末尾拼命添加空括号也无济于事。

如何让我的编译器相信这些类型实际上是相同的?

澄清:

我的主要目标是实现无参数初始化,T而不需要工厂的工厂。例子:

结论:

build我认为这是不可能的,因为抽象函数只是决定了函数必须采用多少个参数块。换句话说:你不能通过一个函数来实现一个抽象函数,它的部分应用恰好与你试图实现的函数具有相同的签名。

0 投票
3 回答
3777 浏览

scala - 在 Scala 中使用 andThen 链接 PartialFunction

让我们重用 Daily scala 中的示例:

让我们补充一下:

然后在这里按预期工作:

返回trueiff x == 1(实际上,pf2根本不需要是 PartialFunction)

但是,我预计:

将返回false所有x(即,如果定义了 pf1,则检查 pf3),但它不会且仅验证 pf1。

最后,pf1 andThen pf3 lift(x)总是会导致 MatchError。我宁愿得到 None... 我可以通过提升每个函数来获得这种行为,例如 inpf1.lift(x).flatMap(pf3.lift)但是使用纯 PartialFunction API 有没有更简单的方法?(并且没有单独提升每个部分功能?)

0 投票
1 回答
395 浏览

scala - 使用部分函数参数方法的基类型的 Scala 值类编译失败

说,我定义了一个值类如下

编译失败并显示以下消息:

错误消息对我来说似乎没有那么有意义,就像我替换collectmap(需要一个函数而不是部分函数)或类不扩展AnyVal,代码片段将编译。

任何人都可以解释背后的原因或链接到提交的问题吗?

0 投票
1 回答
848 浏览

scala - 定义一个扩展PartialFunction的对象,直接用case实现

我对 Scala 很陌生,但我已经喜欢它了。我已阅读有关偏函数的教程和文章。我想要实现的是拥有一个扩展 PartialFunction[...,...] 的对象并直接用案例定义它,而不需要定义 isDefinedAt 和 apply 方法。

例如

是偏函数的有效定义。但是为什么我不能写

? 这将取消定义 isDefinedAt 和 apply 的需要,并使编写某些(由我正在使用的库预定义)类型的类更容易。

0 投票
1 回答
983 浏览

scala - 如何将 scala Map 转换为部分函数

目前我使用以下代码片段:

在我看来,地图自然应该定义一个偏函数。Scala 是否有任何标准/更简洁和明确的方式将映射转换为部分函数?也许某种隐式转换?

0 投票
3 回答
4575 浏览

scala - 在 map、flatmap、...偏函数中使用元组

如果我做:

没关系。

如果我做:

也没关系。

但如果我这样做:

不起作用。
为什么要使用“case”关键字来使用命名元组?

0 投票
2 回答
4157 浏览

scala - Compose partial functions

I have two PartialFunctions f and g. They have no side effects and are quick to execute. What's the best way to compose them into another partial function h such that h.isDefinedAt(x) iff f.isDefinedAt(x) && g.isDefinedAt(f(x))?

It's also OK if h is a function returning an Option rather than a partial function.

I'm disappointed that f andThen g does not do what I want:

0 投票
1 回答
62 浏览

scala - 按类型划分的案例如何在 scala 中工作?

我知道案例类、模式匹配、取消应用和 PartialFunction,但我对下面的宏片段感到困惑。

MemberScope 的 Scaladoc http://www.scala-lang.org/api/2.10.4/#scala.reflect.api.Scopes $MemberScope

收集方法接受PartialFunction[Universe.Symbol, B] 我找不到unapply方法,MethodSymbol它也不是案例类的特征,所以在女巫代码编译器中转换

0 投票
1 回答
1623 浏览

scala - 如何在Scala中部分应用带有类型参数的案例类

所以我有一个元组,我想将它作为 Scala 中案例类的参数传递。对于没有类型参数的案例类,这很容易,我可以这样做:

但是,如果案例类有类型参数,它似乎不起作用:

如何部分应用带有类型参数的案例类?我正在使用 Scala 2.10.3。

0 投票
1 回答
196 浏览

scala - Scala:PartialFunction 的函数定义不明确

PartialFunction 的函数定义如下:

PartialFunction 将允许我们使用casewith collecton collection 进行过滤。例如,当您有整数列表和 PartialFunction isEven[Int, String] 时,如果集合中的值为偶数,它将转换为 String。因此它返回一个新集合,其返回类型+B在定义中。

我的问题是,为什么contravariant -Acovariance +B?它基本上有能力接受任何输入到任何输出。为什么我们需要指出输入应该是A类型的任何类型或超类型,而返回类型应该是B或其子类?我们不能说: