दो सूचियों को देखते हुए a
और b
, a ::: b
और a ++ b
के बीच क्या अंतर है? मैं इन ऑपरेटरों में से एक संदिग्ध बस अन्य कहेंगे, लेकिन वास्तव में, कार्यान्वयन पूरी तरह से अलग लग रही है: एक उपयोग दृष्टिकोण सेसूची के लिए ::: और ++ के बीच क्या अंतर है?
def :::[B >: A](prefix: List[B]): List[B] =
if (isEmpty) prefix
else if (prefix.isEmpty) this
else (new ListBuffer[B] ++= prefix).prependToList(this)
override def ++[B >: A, That](that: GenTraversableOnce[B])
(implicit bf: CanBuildFrom[List[A], B, That]): That = {
val b = bf(this)
if (b.isInstanceOf[ListBuffer[_]])(this ::: that.seq.toList).asInstanceOf[That]
else super.++(that)
}
मैं a ::: b
या a ++ b
को प्राथमिकता देनी चाहिए? कार्यान्वयन परिप्रेक्ष्य से, क्या कोई विशिष्ट कारण है कि इन ऑपरेटरों में से कोई एक दूसरे को क्यों नहीं बुलाता है?
[स्कैला सूची concatenation, ::: बनाम ++] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/6559996/scala-list-concatenation-vs) –