为什么使用Foo [T <:Bar]要求Foo [_ <:Bar]而不是Foo [_]

克里奥斯

给定

trait Foo[T <: Bar] {
   def foo: T
}

为什么编译器解释像签名

def foo(f: Foo[_])

意味着未知_ 一定是一种类型Bar相反,它迫使我这样做

def foo(f: Foo[_ <: Bar])

这会使签名复杂化。我敢肯定,编译器必须是正确的,我错过了一些细微之处,但显然Foo[X]那里X不是某种Bar所以不可能通过建设,为什么?

谢谢。

克里奥斯

简而言之-似乎是编译器的缺陷,也是是否解决该问题的一个公开问题。修复它可能会带来意想不到的后果,但是它经常被提出来以至于仍然被认为是可能的修复方法。这是一些最相关且仍在打开的Bug门票。

PS看来Dotty确实尊重这样的界限,所以他们很可能会解决它!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么foo = bar与foo = bar不同?

来自分类Dev

为什么不要求在赋值`foo = $ bar`中双引号`$ bar`?

来自分类Dev

在bar :: foo`的内部使用`foo`吗?

来自分类Dev

为什么在['foo','bar']中偏向使用%w

来自分类Dev

isinstance(foo,bar)vs type(foo)是bar

来自分类Dev

foo(bar)和foo(bar,baz)

来自分类Dev

哪个是更好的foo :: bar()VS $ foo :: bar()?

来自分类Dev

为什么Foo({})调用Foo(0)而不是Foo()?

来自分类Dev

当foo被声明为可变的时,要求使用&mut foo而不是&foo的原因是什么?

来自分类Dev

如何将foo.war的根路径设置为/ foo / bar而不是/ foo?

来自分类Dev

如何将foo.war的根路径设置为/ foo / bar而不是/ foo?

来自分类Dev

foo,bar,baz等的含义

来自分类Dev

javascript getElementsByClassName(“ foo” ||“ bar”)

来自分类Dev

为什么是“ Foo f(Bar());” 可以是采用Bar类型并返回Foo类型的函数的声明?

来自分类Dev

foo =“ bar”; if(foo ==“ bar”){doX(); }其他{“但是这总是运行”}为什么?

来自分类Dev

使用 moduleFor('foo:bar', 'unit@foo:bar') 搜索并替换 moduleFor('foo:bar')

来自分类Dev

如何计算“ $ foo = 5 && $ bar = 15”,为什么它不是错误?

来自分类Dev

为什么即使都包含“ foo.h”和“ bar.h”,我也需要转发声明类foo而不是类bar的声明?

来自分类Dev

Javascript foo = foo.bar = foobar

来自分类Dev

python中装饰器中的foo=bar(foo)和something=bar(foo)有什么区别?

来自分类Dev

域foo.bar指向127.0.53.53-为什么?

来自分类Dev

如何创建节点“ var / foo / bar”而不是node.addNode(“ foo”)。addNode(“ baar”)?

来自分类Dev

Foo <?,?,?>不是Foo <?,?,?>

来自分类Dev

“ Foobar”或“ foo”或“ bar”是什么意思?

来自分类Dev

“ Foobar”或“ foo”或“ bar”是什么意思?

来自分类Dev

foo = bar programname是什么意思

来自分类Dev

$ foo [bar]和$ foo ['bar']在php中的区别

来自分类Dev

js中的“ foo.bar”和“ foo ['bar']”之间的区别

来自分类Dev

别名foo bar和foo = bar之间的区别

Related 相关文章

  1. 1

    为什么foo = bar与foo = bar不同?

  2. 2

    为什么不要求在赋值`foo = $ bar`中双引号`$ bar`?

  3. 3

    在bar :: foo`的内部使用`foo`吗?

  4. 4

    为什么在['foo','bar']中偏向使用%w

  5. 5

    isinstance(foo,bar)vs type(foo)是bar

  6. 6

    foo(bar)和foo(bar,baz)

  7. 7

    哪个是更好的foo :: bar()VS $ foo :: bar()?

  8. 8

    为什么Foo({})调用Foo(0)而不是Foo()?

  9. 9

    当foo被声明为可变的时,要求使用&mut foo而不是&foo的原因是什么?

  10. 10

    如何将foo.war的根路径设置为/ foo / bar而不是/ foo?

  11. 11

    如何将foo.war的根路径设置为/ foo / bar而不是/ foo?

  12. 12

    foo,bar,baz等的含义

  13. 13

    javascript getElementsByClassName(“ foo” ||“ bar”)

  14. 14

    为什么是“ Foo f(Bar());” 可以是采用Bar类型并返回Foo类型的函数的声明?

  15. 15

    foo =“ bar”; if(foo ==“ bar”){doX(); }其他{“但是这总是运行”}为什么?

  16. 16

    使用 moduleFor('foo:bar', 'unit@foo:bar') 搜索并替换 moduleFor('foo:bar')

  17. 17

    如何计算“ $ foo = 5 && $ bar = 15”,为什么它不是错误?

  18. 18

    为什么即使都包含“ foo.h”和“ bar.h”,我也需要转发声明类foo而不是类bar的声明?

  19. 19

    Javascript foo = foo.bar = foobar

  20. 20

    python中装饰器中的foo=bar(foo)和something=bar(foo)有什么区别?

  21. 21

    域foo.bar指向127.0.53.53-为什么?

  22. 22

    如何创建节点“ var / foo / bar”而不是node.addNode(“ foo”)。addNode(“ baar”)?

  23. 23

    Foo <?,?,?>不是Foo <?,?,?>

  24. 24

    “ Foobar”或“ foo”或“ bar”是什么意思?

  25. 25

    “ Foobar”或“ foo”或“ bar”是什么意思?

  26. 26

    foo = bar programname是什么意思

  27. 27

    $ foo [bar]和$ foo ['bar']在php中的区别

  28. 28

    js中的“ foo.bar”和“ foo ['bar']”之间的区别

  29. 29

    别名foo bar和foo = bar之间的区别

热门标签

归档