Encuentra el tamaño de matriz de un elemento en Scala
Este artículo explicará cómo encontrar el tamaño de un elemento en un array. Primero, comprendamos cómo obtener el tamaño del array y luego extender ese concepto para obtener el tamaño de los elementos presentes dentro del array.
Operador length
y size
en Scala
- operador
length
Sintaxis:
array_name.length
Podemos usar el operador length
de Scala para calcular la longitud del array en Scala. Devuelve el número de elementos en un array.
Pongamos un ejemplo para entenderlo mejor.
Código de ejemplo:
object MyClass {
def main(args: Array[String]) {
val myArr = Array("a", "b", Array(1,2,3,4,5,6), "c")
println(myArr.length)
}
}
Producción :
4
Hemos declarado un array myArr
, que contiene 4 elementos y un elemento es un array. Luego hemos usado el operador length
para obtener la longitud del array.
- operador
size
Podemos usar la propiedad size
del array para obtener su tamaño. Devuelve el número de elementos que contiene el array.
Es bastante similar a la propiedad length
de un array.
Sintaxis:
array_name.size
Veamos un ejemplo para entenderlo mejor.
Código de ejemplo:
object MyClass {
def main(args: Array[String]) {
val myArr1 = Array(3, 2, 5, 7)
val fruits = Array("Apple", "Orange",Array("watermelon","tomato"))
val rate : Array[Double] = Array(4.6, 7.8, 9.5, 4.5)
println(myArr1.size)
println(fruits.size)
println(rate.size)
}
}
Producción :
4
3
4
En el código anterior, hemos declarado tres matrices con algunos elementos y hemos utilizado el operador size
para obtener sus respectivos tamaños.
Obtenga el tamaño del elemento dentro de un array en Scala
Cuando creamos un array de diferentes elementos, se crea con java.io.Serializable
.
Ejemplo:
myArr = Array("a", "b" , Array(11,22,33), "c")
Ahora bien, si nos referimos al 2º elemento de myArr
, Array(11,22,33)
, su referencia será Serializable
, y no tiene length
ni size
. Y si intentamos usarlos, obtendremos el error.
Código de ejemplo:
object MyClass {
def main(args: Array[String]) {
val myArr = Array("a", "b", Array(11,22,33), "c")
println(myArr(2).size)
}
}
Salida: Podemos ver que obtenemos el error.
error: value size is not a member of java.io.Serializable
println(myArr(2).size)
Para arreglar esto, tenemos que encasillar explícitamente el segundo elemento del array usando asInstanceOf
.
Código de ejemplo uno:
object MyClass {
def main(args: Array[String]) {
val myArr = Array("a", "b", Array(11,22,33), "c")
if (myArr(2).isInstanceOf[Array[Int]])
println(myArr(2).asInstanceOf[Array[Int]].size)
}
}
Salida: Podemos ver que obtenemos el tamaño del segundo elemento del array myArr
.
3
En el código anterior, usando la condición if
, primero, verificamos el tipo y la instancia del segundo elemento del array, y luego usamos asInstanceOf
para encasillar y luego usamos el operador size
para obtener su tamaño .
Código de ejemplo dos:
object MyClass {
def main(args: Array[String]) {
val myArr = Array("a", List("tony","stark","hulk","iron man"), "c")
if (myArr(1).isInstanceOf[List[String]])
println(myArr(1).asInstanceOf[List[String]].size)
}
}
Producción :
4