gpt4 book ai didi

foo[T](T,T) : T 的 Scala 类型扩展/推断

转载 作者:行者123 更新时间:2023-12-04 12:43:08 25 4
gpt4 key购买 nike

假设有三个函数:

def foo[T](a:T, b:T): T = a 
def test1 = foo(1, "2")
def test2 = foo(List(), ListBuffer())

虽然 test1 是 Any 类型,但 test2 不会编译。这是为什么? List() 和 ListBuffer() 都是 Any 类型,那么为什么 test2 也不是 Any 类型呢?而且它们都是 SeqFactory 类型,所以 Scala 可以以某种方式推断 test2 的类型是 SeqFactory 吗?
foo(ListBuffer(), "")foo(List(), "")按预期工作

最佳答案

对我来说看起来像一个错误。 Scala 首先推断 Seq[Nothing]{def seq: Seq[Nothing]{def companion: scala.collection.generic.GenericCompanion[Seq[Any]]}; def companion: scala.collection.generic.GenericCompanion[Seq[Any]]} ,然后决定 ListBuffer[Nothing]真的不适合那种类型。

关于foo[T](T,T) : T 的 Scala 类型扩展/推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5734755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com