Voglio ottenere l'elemento ennesima di un Seq
, qualcosa di simile:Come ottengo l'ennesimo elemento di un Seq?
val mySeq = Seq("A", "B", "C")
mySeq.get(1) // Java syntax for List. This does not work.
Voglio ottenere l'elemento ennesima di un Seq
, qualcosa di simile:Come ottengo l'ennesimo elemento di un Seq?
val mySeq = Seq("A", "B", "C")
mySeq.get(1) // Java syntax for List. This does not work.
mySeq.apply(1)
è un altro modo per dire mySeq(1)
scala> val mySeq = Seq("A", "B", "C")
mySeq: Seq[String] = List(A, B, C)
scala> mySeq(0)
res0: String = A
scala> mySeq(1)
res1: String = B
Si noti che la sintassi 'apply apply 'è la stessa della sintassi solitamente utilizzata per accedere all'elemento * nth * di un array in Scala. Questo ci dà una bella simmetria tra Sequenze e Array. Ad esempio, 'val mySum = mySeq (0) + myArray (0)' – DaoWen
Il metodo per ottenere l'elemento esimo di un Seq
n è apply
:
val mySeq = Seq("A", "B", "C")
mySeq.apply(1) // "B"
Di solito non hai mai scrivi x.apply(y)
e usa semplicemente la stenografia x(y)
. Il compilatore Scala lo convertirà per te.
mySeq(1) // "B"
Per evitare indice fuori limite,
scala> mySeq(200)
java.lang.IndexOutOfBoundsException: 200
at scala.collection.LinearSeqOptimized$class.apply(LinearSeqOptimized.scala:65)
at scala.collection.immutable.List.apply(List.scala:84)
... 33 elided
ascensore sequenza,
mySeq.lift(2)
Some(C)
mySeq.lift(200)
None
o in un SI modo milar,
mySeq.drop(2).headOption
Some(C)
mySeq.drop(200).headOption
None
Sollevando la sequenza definiamo una funzione parziale da Int
su ciascun valore della sequenza. Vale a dire da ciascun indice di posizione sul suo valore corrispondente. Quindi le posizioni non definite (nessun valore negativo o maggiore della dimensione della raccolta) vengono mappate su None
, il resto viene definito e diventa il valore Some
.
Per riferimento futuro, è possibile trovare i documenti API per 'Seq' [qui] (http://www.scala-lang.org/api/current/#scala.collection.Seq). –
Ah si. Ecco dove ho finito per trovare la risposta. –