Scala 类型参数被推断为元组

标签 scala syntax

我突然遇到了这种(出乎我意料的)情况:

def method[T](x: T): T = x

scala> method(1)
res4: Int = 1

scala> method(1, 2)
res5: (Int, Int) = (1,2)

为什么在两个或更多参数的情况下方法返回并推断出一个元组但抛出有关参数列表的错误?
是故意的吗?也许这种现象有名字?

最佳答案

% scala2.10 -Xlint

scala> def method[T](x: T): T = x
method: [T](x: T)T

scala> method(1)
res1: Int = 1

scala> method(1, 2)
<console>:9: warning: Adapting argument list by creating a 2-tuple: this may not be what you want.
        signature: method[T](x: T): T
  given arguments: 1, 2
 after adaptation: method((1, 2): (Int, Int))
              method(1, 2)
                    ^
res2: (Int, Int) = (1,2)

关于Scala 类型参数被推断为元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12806982/

相关文章:

scala - Spark(流)RDD foreachPartitionAsync 功能/工作

scala - 如何从 Scala HList 中读取元素?

java - 为什么这个简单的java代码不能编译?

syntax - 这是什么 Visual Basic 语法(开始/结束,无类)?

c - 在 C 中 ':' 是做什么的?

javascript - JavaScript 标识符中允许使用除 $ 之外的哪些不常见字符?

swing - scala 2.10.1 中的 SimpleGUIApplication

scala - 如何使用排除列表(类似于isin)过滤掉RDD中的元素?

scala - 检查我的枚举值中是否存在某些字符串,而没有NoSuchElement异常

Java: token "}"上存在语法错误?