- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个 foo
定义,其中一个应该更具体
def foo(f: java.util.function.ToIntFunction[String]) = println("foo1")
def foo[T](f: String=>T) = println("foo2")
//def foo[T](f: String=>T)(implicit d: DummyImplicit) = println("foo2") //Does not work either
foo({_: String => 1}) //Should pick foo1, but gives error instead
错误是:
error: ambiguous reference to overloaded definition,
both method foo in object Main of type [T](f: String => T)Unit
and method foo in object Main of type (f: java.util.function.ToIntFunction[String])Unit
我也尝试了DummyImplicit
的技巧,但它仍然给出相同的错误。当 Int
出现而不使用反射时,如何实现编译时过载?
我使用的是带有 SAM 类型支持的 Scala 2.12。
<小时/>编辑
我希望得到一个不限于使用Java转换器的解决方案,因为ToIntFunction接口(interface)可以被Scala特征取代,例如
trait ToIntFunction[T] { def apply(v: T): Int }
def foo(f: ToIntFunction[String]) = println("foo1")
def foo[T](f: String=>T) = println("foo2")
因为我认为这是方法重载的一个更普遍的问题。
最佳答案
在我的 Scala 2.12 机器上 foo({_: String => 1})
计算结果为 foo2
,因此我无法重现该问题。我对SAM conversion in overloading resolution的解读在 Scala 2.12 中,Function
类型的参数优先,因此它的计算结果应为 foo2
:
In order to improve source compatibility, overloading resolution has been adapted to prefer methods with Function-typed arguments over methods with parameters of SAM types.
注意_: String => 1
是Function1
。要强制其计算为 foo1
,请尝试 scala-java8-compat 中的 asJava
像这样:
import scala.compat.java8.FunctionConverters._
foo({_: String => 1}.asJava) // foo1
根据 Krzysztof Atłasik 的评论,它可以在 Scala 2.13 中重现。
关于scala - 含糊不清的过载,即使是更具体的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56622586/
在我看来,CakePHP 中的对象过载过多。我在我的布局中输出调试:debug($this); 并且我发现了 6 个 HTML 帮助对象实例: [Html] => HtmlHelper Object
Product **products; int numProducts = 0; void setup() { ifstream finput("products.txt"); //g
为什么返回 5,我很好奇这个普通函数比默认参数 one 有更高的优先级。有人可以向我解释一下吗?提前致谢 static void Main(string[] args) { Conso
我现在遇到 mysql 过载的问题,然后当它非常繁忙时,服务器将完全停止响应。我知道我的一个数据库有大量流量,但我该如何处理这个问题。我是否需要一台更好的服务器,或者我是否需要一个不同的数据库引擎。目
由于插入查询的过载,我最近开始遇到一些严重的服务器问题。我们服务器上的所有查询一直以来都得到了优化,但是由于大量的 INSERT 查询,流量再次回升并且 CPU 已达到极限。 我们为访问我们网站的每位
我收到这些错误: circleType.cpp||In function 'std::ostream& operator<<(std::ostream&, circleType&)':| circle
好的,我一直是 inspired to do some head punching .似乎重载 operator& 会导致不小的痛苦。 存在哪些合理的重载情况? (不能说我曾经这样做过......)
RabbitMQ 集群不接受新连接! 连接的套接字数量很少,Rabbitmq 日志中的唯一消息是: ** WARNING ** Mnesia is overloaded 这意味着什么?我该如何解决?
我们可以使用 lombok 来生成 setter,如下所示: @Data //or @Setter public class Test { int a;
我正在尝试将大约 1 GB 大小的文件下载到具有 1 GB RAM 内存的服务器,因此如果我尝试将其下载到变量中(下面的代码),操作系统会因 RAM 过载而终止进程. require LWP::Use
这个简单的程序无法编译。 [使用 XE5 和 D10 进行测试。] program Project10; {$APPTYPE CONSOLE} {$R *.res} uses System.Cla
我得到了这台服务器带有 8GB DDR3 RAM 的 Intel Xeon 四核 E3-1230v2 我发现这台服务器的 CPU 正在耗尽。看起来严重重载。观察“每日进程日志”后,我意识到下面的进程占
问题: 我遇到的问题是我的应用程序运行缓慢,因为我在一个文件 (index.html) 中运行了太多页面(page1.html、page2.html 和 page3.html),重点是让用户决定他/她
我试图以这种方式重载 std::find 函数: include include include "Marker.h" namespace Test { class MarkerConta
我有一个动画和 JS,用于交替 2 个 div 并更改它们的背景图像(来自几十个图像的数组),有点可互换的 div。一切正常,但是当动画运行时我可以看到我的 CPU 处于 100%。起初我认为这可能是
我刚刚重新安装了 Vim,这次我在我的 VIM 配置中添加了一些新插件。问题是,现在,当我对文件进行第一次更改时,VIM 会阻塞并且我的一个 CPU 达到 100% 负载。当我编辑文件时,这种情况也会
我是一名新编码员,正在学习 Marionette 来制作 session 预订应用程序。我已经打听了好几个小时,并且已经敲了我的头好几个小时了。 基本上,问题是这样的,当我添加 session 时,会
我正在尝试在 CloudSim Plus 模拟器中进行水平自动缩放。我需要通过多个虚拟机来扩展应用程序。我正在尝试修改示例 LoadBalancerByHorizontalVmScalingExamp
有没有一种方法可以强制 C# 编译器忽略缺少的对象运算符重载,而是在运行时处理该检查?我问是因为我有一个包含多个对象的容器,这些对象具有类型为 int、string、ushort 等的各种属性。我正在
好的,我有这个查询,它为我提供了 DISTINCT product_series,以及表中的所有其他字段: SELECT pi.* FROM ( SELECT DISTINC
我是一名优秀的程序员,十分优秀!