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

scala - 将 PartialFunction 与常规函数相结合

所以,假设,我想为 a 提供一个“包罗万象”的后备方案PartialFunction

这不编译:missing parameter type for expanded function ((x$1) => x$1.toString)。这个:

也不编译(同样的错误)。

这个:

失败了type mismatch; found : Int => String; required: PartialFunction[?,?]

我能找到使它工作的唯一方法是拼出整个事情:

有没有更好的语法呢?我的意思是,不必告诉它我正在将一个部分函数从 int 传递到 string 到它期望从 in 接收到 string 的部分函数的位置。这一点都不含糊,我为什么要这样做?

0 投票
3 回答
652 浏览

scala - 匿名 PartialFunction 语法

我之前问过这个问题:将 PartialFunction 与常规函数结合起来

然后意识到,我实际上并没有问对。所以,这里又进行了一次尝试。

如果我这样做:

它不编译:error: missing parameter type for expanded function The argument types of an anonymous function must be fully known. (SLS 8.5) Expected type was: PartialFunction[?,?]

但这很好用:

问题是有什么区别?在这两种情况下,参数的类型是相同的:PartialFunction[Int, String]. 传入的值实际上是相同的。为什么一个案例有效,而另一个案例无效?

0 投票
1 回答
7441 浏览

scala - 在 Scala 中使用运算符 orElse 的正确方法是什么?

我想写两个服务,然后用orElse让两个服务结合在一起,就是service_one或者service_two。它们都是 PartialFunction。

服务一是:

服务二是:

然后我想把它们结合在一起。

错误是:

如果 case 匹配第一个服务的路径,则如何组合然后 make 的工作方式类似于第一个服务的工作,如果 case 匹配第二个服务的路径。二是服务工作。

ps:作为相关人士:

HttpService 对象定义如下:

0 投票
1 回答
365 浏览

scala - Scala 中的偏函数应用

我正在学习函数式编程,遵循Paul Chiusano 和 Rúnar Bjarnason 所著的 Scala 中的函数式编程一书。我特别关注第 3 章,在那里我正在为一个代表单链表的类实现一些伴随函数,这是作者提供的。

我正在实现的函数在对象列表中,是伴随函数

在实现 dropWhile 时,其方法签名为:

我遇到了一些关于部分函数应用的问题:

在书中,作者说谓词 f 是在一个单独的参数组中传递的,以帮助 scala 编译器进行类型推断,因为如果我们这样做,Scala 可以根据它所知道的确定 f 的类型而无需任何注释关于 List 的类型,让函数使用起来更方便。

所以,如果我们在同一个参数组中传递 f,scala 会强制调用变成这样:val total = List.dropWhile(example, (x:Int) => 6%x==0 )我们明确定义 x 的类型,我们会“失去”部分函数应用的可能性,对吗?

但是,为什么偏函数应用在这种情况下有用呢?只允许类型推断?在不应用谓词 f 的情况下“部分应用”像 dropWhile 这样的函数是否有意义?因为在我看来,如果我们不应用 f...

那么......为什么部分函数应用程序有用?这是它总是如何完成的,还是它只是 Scala 特有的东西?我知道 Haskell 有一种叫做“完全推理”的东西,但我不知道它的确切含义......

提前致谢

0 投票
1 回答
53 浏览

scala - 如何将 PartialFunction 与另一个函数结合并返回 PartialFunction?

我有以下课程:

其中Recieve定义为

在这里,我试图避免声明val持有PartialFunction[Any, Any]并以这种方式调用它。但编译器拒绝此代码。它打印:

有没有捷径可以做这样的事情?

0 投票
1 回答
71 浏览

scala - Scala 部分函数应用语义 + 同步锁定

基于我之前关于基于值相等而不是锁相等的锁的问题,我提出了以下实现:

我编写了一些测试来验证我的锁是否按预期工作:

上述测试按预期工作(经过数百万次运行测试)。但是,当我更改以下行时:

对此:

测试失败。

预期的:

或者

实际的:

上面的两段代码应该是相同的,但是对于第二种风格(部分应用的)代码的测试(即lock(id)总是同时进入相同的)。id为什么?

0 投票
3 回答
279 浏览

scala - Scala,PartialFunction 的默认代码?

我正在使用 Akka,并希望为 PartialFunction 的所有情况运行一些代码。对于演员监督,我有类似的东西:

我发现为所有情况运行一些代码而不必在每种情况下再次编写它的唯一方法是:

我环顾四周并查看了其他答案(例如这个),但找不到任何替代我想出的方法。

0 投票
1 回答
226 浏览

scala - @在Scala中是什么意思?

在研究来源时,我在演员akka中发现了以下内容:akka.event.slf4j.SLF4JLogger

我不太明白这个@标志是什么。它不是一种方法,也没有event范围内的声明。Warning,Info并且Debug都是具有 apply 方法的对象。

0 投票
2 回答
71 浏览

scala - Scala 类型推断无法推断泛型函数的类型

我有以下代码

def sendMoney[T <: MoneyType](fn: T => Future[T], input: T): Unit

就是这样称呼的

HoldsMoneyReserveMoney具有MoneyType.

Scala 编译器抛出以下错误。

missing parameter type for expanded function

请注意,如果

0 投票
1 回答
33 浏览

scala - 我们如何为特征创建对象?

如果 PartialFunction 是一个特征,那么这段代码是如何工作的?我们是在创建一个 trait 的对象吗?