Chcę uzyskać n-ty element jest Seq
, coś takiego:Jak uzyskać n-ty element Seq?
val mySeq = Seq("A", "B", "C")
mySeq.get(1) // Java syntax for List. This does not work.
Chcę uzyskać n-ty element jest Seq
, coś takiego:Jak uzyskać n-ty element Seq?
val mySeq = Seq("A", "B", "C")
mySeq.get(1) // Java syntax for List. This does not work.
mySeq.apply(1)
to kolejny sposób powiedzieć 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
Należy zauważyć, że skrócona składnia 'apply' jest taka sama, jak składnia używana zwykle do dostępu do * nth * elementu tablicy w Scali. To daje nam ładną symetrię pomiędzy Sekwencjami i Tablicami. Np. 'Val mySum = mySeq (0) + myArray (0)' – DaoWen
metoda, aby uzyskać n th element w Seq
jest apply
:
val mySeq = Seq("A", "B", "C")
mySeq.apply(1) // "B"
Zazwyczaj nigdy napisz x.apply(y)
i użyj skrótu x(y)
. Kompilator Scala przekonwertuje go dla Ciebie.
mySeq(1) // "B"
Aby uniknąć indeks poza granicami,
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
wyciąg sekwencja,
mySeq.lift(2)
Some(C)
mySeq.lift(200)
None
lub w Si Milar sposób
mySeq.drop(2).headOption
Some(C)
mySeq.drop(200).headOption
None
podnosząc sekwencję zdefiniować częściowy funkcję z Int
na każdej wartości sekwencji. Mianowicie z każdego indeksu pozycji na odpowiadającą mu wartość. W związku z tym pozycje nieokreślone (każda wartość ujemna lub większa niż rozmiar kolekcji) są mapowane na None
, pozostałe są zdefiniowane i stają się wartością Some
.
W celu późniejszego wykorzystania można znaleźć dokumenty API dla 'Seq' [tutaj] (http://www.scala-lang.org/api/current/#scala.collection.Seq). –
Ah tak. Tam właśnie znalazłem odpowiedź. –