Canonieke manier voor lege array in Scala?

Wat is de canonieke manier om een ​​lege array in Scala te krijgen? new Array[String](0)is te uitgebreid.


Antwoord 1, autoriteit 100%

Array[String]()

Je kunt het gedeelte [String]weglaten als het kan worden afgeleid (bijv. methodThatAlwaysTakesAStringArray( Array() )).


Antwoord 2, autoriteit 71%

val emptyArray =  Array.empty[Type]

Antwoord 3, autoriteit 6%

Array()is meestal voldoende. Het zal van het type Array[Nothing]zijn.

Als u impliciete conversies gebruikt, moet u mogelijk Array[Nothing] schrijven vanwege Bug #3474:

def list[T](list: List[T]) = "foobar"
implicit def array2list[T](array: Array[T]) = array.toList

Dit werkt niet:

list(Array()) => error: polymorphic expression cannot be instantiated to expected type;
    found   : [T]Array[T]
    required: List[?]
        list(Array())
                  ^

Dit zal:

list(Array[Nothing]()) //Nothing ... any other type should work as well.

Maar dit is slechts een vreemd geval van impliciete zaken. Het is goed mogelijk dat dit probleem in de toekomst zal verdwijnen.


Antwoord 4, autoriteit 4%

Als het arraytype een van de primitieven is, kun je de sneltoetsen van scala.Array gebruiken.

Voor een bytearray zou dit bijvoorbeeld zijn:

val arr = Array.emptyByteArray

Dit is handig wanneer het type niet kan worden afgeleid en u minder uitgebreid wilt blijven.

Other episodes