Scala-в чем разница между размером и длиной Seq?

в чем разница между размером и длиной Seq? Когда использовать одно и когда другое?

scala> var a :Seq[String] = Seq("one", "two")
a: Seq[String] = List(one, two)

scala> a.size
res6: Int = 2

scala> a.length
res7: Int = 2

Это то же самое?

спасибо

4 ответов


ничего. В Seq doc, при методе size четко указано: "размер этой последовательности, эквивалентный length.".


size определена в GenTraversableOnce, тогда как length определена в GenSeqLike, Так что length существует только для Seqs, тогда как для всех Traversables. Для Seqs, однако, как уже указывалось,size просто делегатам length (что, вероятно, означает, что после вставки вы получите идентичный байт-код).


ничего, один делегирует другому. Увидеть SeqLike черта.

  /** The size of this $coll, equivalent to `length`.
   *
   *  $willNotTerminateInf
   */
  override def size = length

в Seq они такие же, как и другие упоминали. Однако, для информации, это то, что IntelliJ предупреждает о scala.Array:

заменить .размер с .длина на массивах и строках

данные по осмотра: это массив отчетов о проверке.размер и строка.размер звонков. Пока такие звонки являются законными, они требуют дополнительного неявного преобразования в SeqLike, котор нужно сделать. Общим вариантом использования будет вызов length on массивы и строки могут предоставлять ощутимые преимущества.