为什么我可以使用为 的第一个参数to
构造 a而不是?请参阅以下示例 Scala 控制台交互。Range
Future.traverse
until
scala> Future.traverse(1 to 5)(Future.successful)
val res5: scala.concurrent.Future[IndexedSeq[Int]] = Future(<not completed>)
scala> Future.traverse(1 until 5)(Future.successful)
^
error: Cannot construct a collection of type scala.collection.immutable.AbstractSeq[Int] with elements of type Int based on a collection of type scala.collection.immutable.AbstractSeq[Int].
scala> res5
val res7: scala.concurrent.Future[IndexedSeq[Int]] = Future(Success(Vector(1, 2, 3, 4, 5)))
scala>
请注意,尽管 Scala 2.13.2 似乎具有相同的行为,但我将 Scala 2.13.5 用于控制台。
对于它的价值,我注意到to
返回Range.Inclusive
和until
返回Range.Exclusive
。但是两者都 extend Range
,所以我不知道这两种类型之间有什么不同,以至于Future.traverse
可以将一个而不是另一个作为第一个参数。