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
一样吗?
谢谢
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
一样吗?
谢谢
没有什么。在Seq文档中,在size方法中明确说明:“这个序列的大小,等同于length
。”。
在GenTraversableOnce
中定义了size
,而在GenSeqLike
中定义了length
,因此length
仅适用于Seq
,而size
适用于所有Traversable
。 然而,正如先前指出的那样,对于Seq
,size
只是委托给length
(这可能意味着,在内联之后,您将获得相同的字节码)。
在Seq
(序列)中它们是相同的,正如其他人所提到的。然而,以下是IntelliJ在scala.Array
上警告的信息:
将数组和字符串中的.size替换为.length
检查信息:此检查报告了对array.size和string.size的调用。虽然这样的调用是合法的,但它们需要进行额外的隐式转换才能变成
SeqLike
。一个常见的用例是在数组和字符串上调用length可能会带来显著的优势。
这句话的意思是,一个方法将任务委托给了另一个方法。详见SeqLike trait。
/** The size of this $coll, equivalent to `length`.
*
* $willNotTerminateInf
*/
override def size = length