Scala的可变参数的功能和Seq(Scala variadic functions and Seq

2019-07-30 23:10发布

据我所知,像性状ListSeq中的Scala标准库而不是语言本身的一部分来实现。

有一两件事,我不明白,但:一个具有可变参数的功能,看起来像一个语法

def foo(args: String*) = ...

内部人进入args ,这将是一个Seq

这是我不清楚是否:

  • Seq被认为是一种特殊的数据结构,足以见得作为语言的一部分,或
  • *这里的符号是设法避免在混凝土结构的数据接口的任何引用更一般的语法的具体情况。

有谁知道哪一个是正确的旅游解说?

Answer 1:

这的确是有些语言和库之间的“模糊”。 在§4.6.2重复参数 Scala语言规范V2.9状态:

(:T * ...,x)的参数部分的最后一个值参数可以由“*”,例如为后缀。 类型的方法的内部这样的重复参数的是则序列类型scala.Seq[ Ť ]

所以,当你使用重复的参数,假设scala.Seq可在运行时(这应该是这样的,因为它是标准库的一部分)。



Answer 2:

我想这是第一个。 有一对夫妇的是存在的语言要求,他们虽然不是真正的语言的一部分类型。 与序列,你找到了一个。



文章来源: Scala variadic functions and Seq