2016-04-20 8 views
1

In Scala sind LinearSeq und IndexedSeq Untermerkmale von Seq. Wenn ich einen IndexedSeq, wieConstruct LinearSeq

IndexedSeq(1) 

konstruiere ich die Standardimplementierung erhalten, der Vektor ist

IndexedSeq[Int] = Vector(1) 

Aber wenn ich versuche, eine LinearSeq zu konstruieren, wie in

LinearSeq(1) 

I erhalten Sie einen Fehler anstelle der Standardimplementierung Liste

<console>:8: error: not found: value LinearSeq 
      LinearSeq(1) 
     ^

Bitte erläutern Sie dieses Verhalten.

Antwort

4

Sie müssen es zuerst importieren ...

import scala.collection.immutable.LinearSeq 

oder

import scala.collection.LinearSeq 

Repl:

@ import scala.collection.immutable.LinearSeq 
import scala.collection.immutable.LinearSeq 
@ LinearSeq(1) 
res3: LinearSeq[Int] = List(1) 

zu beantworten, warum Sie diese importieren müssen aber IndexedSeq Werke, Siehe Quellen des scala Paketobjekts, das standardmäßig importiert wird:

type IndexedSeq[+A] = scala.collection.IndexedSeq[A] 
val IndexedSeq = scala.collection.IndexedSeq 

so Designer der Sprache IndexedSeq Umfang auf Standard gebracht, haben sie die gleichen für Traversable, Iterable, Seq, List und ein paar andere Dinge, für die Bequemlichkeit, aber sie tat das nicht für LinearSeq, die, wie ich wohl sinnvoll ist habe es nie explizit in meinem Code verwendet, während ich die meisten anderen Dinge verwendet habe, die da sind.

+0

Vielen Dank. Klar erklärt – pkid

Verwandte Themen