arrays - que - Conversión de una matriz completa de int a doble para hacer algunas operaciones aritméticas
que es un array en programacion (1)
Convertir un tipo de matriz en otro es un trabajo para el map
, que aplica una función a cada elemento de una matriz, devolviendo los resultados como una nueva matriz del tipo que devuelve la función. En este caso, desea una función que convierta el Int
a un Double
.
Pruebe algo como esto:
let integers = Array(0...33)
let fractions = Array(0...999)
let arrayDoubleComposed = map(Zip2(integers, fractions)) {
(i, f) in
Double(i) + Double(f)/1_000
}
Zip2
toma dos secuencias y las empareja: primero elementos juntos, segundos elementos juntos, etc. Luego esto lo pasa al map
que combina los dos elementos.
(Tenga en cuenta que también puede inicializar las matrices de los rangos en lugar de declararlos y luego agregar los valores)
No está claro lo que quieres decir, ya que las matrices de números enteros y fraccionarios van a tener una longitud diferente. La forma en que Zip2
maneja esto es detenerse cuando se agota la primera secuencia, pero puede que esto no sea lo que quieres.
PS lanza como el que probaste, que convierte los contenidos de una matriz en masa, solo funciona en casos especiales al convertir de tipos Objective-C a tipos Swift nativos, cuando el compilador Swift rocía algo de magia.
Tengo este pequeño código:
var arrayIntegers : [Int] = []
arrayIntegers += 0...33
var arrayDecimal : [Int] = []
arrayDecimal += 0...999
El problema es que no puedo convertir los valores de ambas matrices en Dobles. Lo que quiero hacer es obtener una nueva matriz (llamada arrayDoubleComposed) con valores compuestos, tomar un valor de arrayIntegers como la parte entera y luego tomar otro valor de arrayDecimal como la parte flotante.
Cuando trato de encasillar esto:
var arrayDoubleComposed : [Double] = []
arrayDoubleComposed = Double (arrayIntegers[] + (arrayDecimal[])/1000)
Tengo un error Lo mismo si suprimo el [].
Soy un poco nuevo, lo sé ...