Skip to content

Commit ad0c4f4

Browse files
committed
fix: update code blocks for arrays and vectors in tuples-and-collections.md
1 parent ccaf321 commit ad0c4f4

File tree

1 file changed

+57
-12
lines changed

1 file changed

+57
-12
lines changed

src/es/quick-comparisons/tuples-and-collections.md

Lines changed: 57 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,16 @@ forma más sencilla:
5151
Si quisiéramos declarar el valor de retorno de una función como una tupla
5252
podría ser algo así:
5353

54-
```rust,no_run
54+
```rust,no_run,ignore
5555
fn getCoordinates() -> (i32, i32) {
5656
(10, 20)
5757
}
5858
```
5959

6060
## Arrays / Slices / Vectores
6161

62+
### Arrays
63+
6264
Go utiliza la misma sintaxis para los tres tipos de datos
6365

6466
```go
@@ -99,6 +101,20 @@ Los arreglos no se pueden redimensionar, tiene un tamaño fijo, podemos modifica
99101
las posiciones si declaramos el arreglo como mutable, pero no podemos agregar
100102
nuevos elementos.
101103

104+
El que tengan un tamaño fijo ayuda a que Rust nos diga si estamos accediendo a
105+
una posición del arreglo inexistente, es decir si estamos saliendo del rango
106+
de elementos que están dentro del arreglo:
107+
108+
```rust
109+
let arr = [7, 5, 4];
110+
111+
arr[99];
112+
```
113+
114+
Este error sera encontrado en tiempo de compilación.
115+
116+
### Slices
117+
102118
Consideramos a los slices como una referencia a un rango de elementos:
103119

104120
```rust
@@ -108,23 +124,52 @@ Consideramos a los slices como una referencia a un rango de elementos:
108124
#println!("{slice:?}")
109125
```
110126

127+
Al igual que los array convencionales, si intentamos pasar un rango invalido
128+
obtendremos un error en tiempo de compilación.
129+
130+
### Vectores
131+
111132
Además Rust tiene el tipo de dato `Vec`, el cual es un tipo de dato dinamico,
112133
esta colección puede ser modificada agregando nuevos elementos, podemos crear
113134
`Vec` de varias formas, pero una de las más convencionales es con la macro
114135
`vec!`:
115136

116137
```rust
117-
let mut v = vec![1, 2, 3];
118-
v.push(4);
119-
#println!("{v:?}")
138+
let mut v = vec![1, 2, 3];
139+
v.push(4);
140+
#println!("{v:?}")
120141
```
121142

122143
Al declarar como mutable podemos utilizar el método `push` para agregar
123144
elementos dentro.
124145

146+
Sin embargo al ser dinamico Rust no puede calcular en tiempo de compilación que
147+
valores serán cargados en memoría durante la ejecución, es por eso que este
148+
código:
149+
150+
```rust
151+
let mut v = vec![1, 2, 3];
152+
v[99];
153+
```
154+
155+
Deberá fallar en tiempo de ejecución, Rust para solucionar nos da el método
156+
`get` que es lo que deberemos de usar para obtener valores dentro de un arreglo.
157+
158+
```rust
159+
let mut v = vec![1, 2, 3];
160+
v.get(99);
161+
#println!("{:?}", v.get(99));
162+
```
163+
164+
El método `get` nos devolverá un `Option<T>` profundizaremos sobre este tipo
165+
en el siguiente capitulo.
166+
125167
Por otro lado hay que aclarar que tanto los array, como los slices y los `Vec`,
126-
son tipos de datos que solo almacenan un único tipo de dato dentro, para
127-
utilizar más de un tipo de dato posiblemente deberíamos de utilizar una tupla.
168+
son tipos de datos que solo almacenan un único tipo de dato dentro, como pueden
169+
ver en los ejemplos, entonces solo podemos almacenar o i32, Strings, flotantes,
170+
o lo que necesitemos, pero unicamente elementos que sean de ese tipo de dato,
171+
para utilizar más de un tipo de dato posiblemente deberíamos de utilizar una
172+
tupla o usar otro tipo de dato.
128173

129174
### Mapas / Diccionarios / HashMaps
130175

@@ -153,11 +198,11 @@ En Go hariamos algo como esto:
153198
Mientras que el mismo ejemplo en Rust seria así:
154199

155200
```rust
156-
#use std::collections::HashMap;
157-
#
158-
let mut mapa = HashMap::new();
159-
mapa.insert("manzana", 3);
160-
mapa.insert("naranja", 5);
201+
#use std::collections::HashMap;
202+
#
203+
let mut mapa = HashMap::new();
204+
mapa.insert("manzana", 3);
205+
mapa.insert("naranja", 5);
161206

162-
println!("Hay {} manzanas", mapa.get("manzana").unwrap());
207+
println!("Hay {} manzanas", mapa.get("manzana").unwrap());
163208
```

0 commit comments

Comments
 (0)