Skip to content

Commit 8d36bcc

Browse files
committed
weakmap-weakset-correction
1 parent fb3b99c commit 8d36bcc

File tree

10 files changed

+116
-506
lines changed

10 files changed

+116
-506
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Let's store read messages in `WeakSet`:
1+
Guardemos los mensajes leídos en `WeakSet`:
22

33
```js run
44
let messages = [
@@ -9,35 +9,35 @@ let messages = [
99

1010
let readMessages = new WeakSet();
1111

12-
// two messages have been read
12+
// se han leído dos mensajes
1313
readMessages.add(messages[0]);
1414
readMessages.add(messages[1]);
15-
// readMessages has 2 elements
15+
// readMessages tiene 2 elementos
1616

17-
// ...let's read the first message again!
17+
// ...¡leamos nuevamente el primer mensaje!
1818
readMessages.add(messages[0]);
19-
// readMessages still has 2 unique elements
19+
// readMessages todavía tiene dos únicos elementos
2020

21-
// answer: was the message[0] read?
21+
// respuesta: ¿se leyó el mensaje [0]?
2222
alert("Read message 0: " + readMessages.has(messages[0])); // true
2323

2424
messages.shift();
25-
// now readMessages has 1 element (technically memory may be cleaned later)
25+
// ahora readMessages tiene 1 elemento (técnicamente la memoria puede limpiarse más tarde)
2626
```
2727

28-
The `WeakSet` allows to store a set of messages and easily check for the existance of a message in it.
28+
El `WeakEst` permite almacenar un conjunto de mensajes y verificar fácilmente la existencia de un mensaje en él.
2929

30-
It cleans up itself automatically. The tradeoff is that we can't iterate over it, can't get "all read messages" from it directly. But we can do it by iterating over all messages and filtering those that are in the set.
30+
Se limpia automáticamente. La desventaja es que no podemos iterar sobre él, no podemos obtener "todos los mensajes leídos" directamente. Pero podemos hacerlo iterando sobre todos los mensajes y filtrando los que están en el conjunto.
3131

32-
Another, different solution could be to add a property like `message.isRead=true` to a message after it's read. As messages objects are managed by another code, that's generally discouraged, but we can use a symbolic property to avoid conflicts.
32+
Otra solución diferente podría ser agregar una propiedad como `message.isRead = true` a un mensaje después de leerlo. Como los objetos de mensajes son administrados por otro código, generalmente se desaconseja, pero podemos usar una propiedad simbólica para evitar conflictos.
3333

34-
Like this:
34+
Como esto:
3535
```js
36-
// the symbolic property is only known to our code
36+
// la propiedad simbólica solo es conocida por nuestro código
3737
let isRead = Symbol("isRead");
3838
messages[0][isRead] = true;
3939
```
4040

41-
Now third-party code probably won't see our extra property.
41+
Ahora el código de terceros probablemente no verá nuestra propiedad adicional.
4242

43-
Although symbols allow to lower the probability of problems, using `WeakSet` is better from the architectural point of view.
43+
Aunque los símbolos permiten reducir la probabilidad de problemas, usar `WeakSet` es mejor desde el punto de vista arquitectónico.

Diff for: 1-js/05-data-types/08-weakmap-weakset/01-recipients-read/task.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ importance: 5
22

33
---
44

5-
# Store "unread" flags
5+
# Almacenar banderas "no leídas"
66

7-
There's an array of messages:
7+
Hay un array de mensajes:
88

99
```js
1010
let messages = [
@@ -14,10 +14,10 @@ let messages = [
1414
];
1515
```
1616

17-
Your code can access it, but the messages are managed by someone else's code. New messages are added, old ones are removed regularly by that code, and you don't know the exact moments when it happens.
17+
Su código puede acceder a él, pero los mensajes son administrados por el código de otra persona. Se agregan mensajes nuevos, los códigos viejos se eliminan regularmente con ese código, y usted no sabe los momentos exactos en que sucede.
1818

19-
Now, which data structure could you use to store information about whether the message "has been read"? The structure must be well-suited to give the answer "was it read?" for the given message object.
19+
Ahora, ¿qué estructura de datos podría usar para almacenar información sobre si el mensaje "ha sido leído"? La estructura debe ser adecuada para dar la respuesta "¿se leyó?" para el objeto del mensaje dado.
2020

21-
P.S. When a message is removed from `messages`, it should disappear from your structure as well.
21+
P.D Cuando un mensaje se elimina de `messages`, también debería desaparecer de su estructura.
2222

23-
P.P.S. We shouldn't modify message objects, add our properties to them. As they are managed by someone else's code, that may lead to bad consequences.
23+
P.P.D. No debemos modificar los objetos del mensaje, o agregarles nuestras propiedades. Como son administrados por el código de otra persona, eso puede generarnos resultados no deseados.

Diff for: 1-js/05-data-types/08-weakmap-weakset/02-recipients-when-read/solution.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
To store a date, we can use `WeakMap`:
2+
Para almacenar una fecha, podemos usar `WeakMap`:
33

44
```js
55
let messages = [
@@ -11,5 +11,5 @@ let messages = [
1111
let readMap = new WeakMap();
1212

1313
readMap.set(messages[0], new Date(2017, 1, 1));
14-
// Date object we'll study later
14+
// // Obeto Date que estudiaremos más tarde
1515
```

Diff for: 1-js/05-data-types/08-weakmap-weakset/02-recipients-when-read/task.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ importance: 5
22

33
---
44

5-
# Store read dates
5+
# Almacenar fechas de lectura
66

7-
There's an array of messages as in the [previous task](info:task/recipients-read). The situation is similar.
7+
Hay un array semejante al de la actividad anterior [previous task](info:task/recipients-read). La sitación es similar:
88

99
```js
1010
let messages = [
@@ -14,8 +14,8 @@ let messages = [
1414
];
1515
```
1616

17-
The question now is: which data structure you'd suggest to store the information: "when the message was read?".
17+
La pregunta ahora es: ¿qué estructura de datos es la adecuada para almacenar la información: "cuando se leyó el mensaje?".
1818

19-
In the previous task we only needed to store the "yes/no" fact. Now we need to store the date, and it should only remain in memory until the message is garbage collected.
19+
En la tarea anterior solo necesitábamos almacenar el hecho de "sí / no". Ahora necesitamos almacenar la fecha, y solo debe permanecer en la memoria hasta que el mensaje sea recolectado como basura.
2020

21-
P.S. Dates can be stored as objects of built-in `Date` class, that we'll cover later.
21+
P.D Las fechas se pueden almacenar como objetos de la clase incorporada `Date`, que cubriremos más adelante.

0 commit comments

Comments
 (0)