[Scala] 2.12 => 2.13 copyArrayToImmutableIndexedSeq is deprecated

[Scala] 2.12 => 2.13 copyArrayToImmutableIndexedSeq is deprecated
Julian_
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1703
0

method copyArrayToImmutableIndexedSeq in class LowPriorityImplicits2 is deprecated (since 2.13.0): Implicit conversions from Array to immutable.IndexedSeq are implemented by copying; Use the more efficient non-copying ArraySeq.unsafeWrapArray or an explicit toIndexedSeq call

Dostaję takie ostrzeżenie wskazujące split w ostatniej linijce tego:

Kopiuj
    val seq = items
      .drop(1)
      .map(_.children.map(_.text).toSeq)
      .map(row => Country(row(0), row(1), row(3).replaceAll("[\\d,\\[\\]]", "").split(",")))
Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
3

To samo ostrzeżenie jest przy kodzie:

Kopiuj
val a: Seq[String] = "ala ma kota".split(" ")

String.split zwraca Array[String] (który nie jest podtypem Seq), a ty chcesz to wstawić bezpośrednio do parametru typu Seq i Scala uruchamia konwersje implicit (które same w sobie są powoli deprecated). Dorzuć .toSeq albo .toIndexedSeq na końcu, żeby pozbyć się ostrzeżenia i konwersji implicit, np:

Kopiuj
val a: Seq[String] = "ala ma kota".split(" ").toSeq

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.