«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Неизменяемые структуры данных: записи и кортежи в ECMA 4

Неизменяемые структуры данных: записи и кортежи в ECMA 4

Опубликовано 8 ноября 2024 г.
Просматривать:745

Immutable Data Structures: Records and Tuples in ECMA 4

Неизменяемые структуры данных: новая функция в ECMAScript 2024

ECMAScript 2024 представляет несколько интересных обновлений, но одна особенность, которая меня особенно выделяет, — это введение неизменяемых структур данных. Эти новые структуры — записи и кортежи — меняют правила игры в управлении данными в JavaScript. Они предлагают удовлетворительный способ обеспечить надежность, безопасность и согласованность наших данных, что имеет первостепенное значение, когда нам нужны надежные приложения, которые мы можем легко обслуживать. Вот почему неизменяемые структуры данных так интересны и как их можно использовать наиболее эффективно.

Что такое записи и кортежи?

Записи и кортежи — это новые структуры данных, которые изначально являются неизменяемыми. Это означает, что после создания записи или кортежа его содержимое невозможно изменить. Любая попытка изменить их приводит к созданию нового экземпляра, в то время как оригинал остается неизменным. Эта неизменяемость помогает предотвратить непредвиденные побочные эффекты и делает ваш код более предсказуемым.

Зачем использовать неизменяемые структуры данных?

  • Предсказуемость: Неизменяемые структуры данных облегчают анализ вашего кода, поскольку вы знаете, что как только данные будут установлены, они не будут случайно изменены где-либо в вашем приложении.
  • Отладка: Благодаря неизменяемости вы избегаете проблем, связанных с неожиданным изменением данных, что упрощает отладку.
  • Функциональное программирование: Неизменяемые данные хорошо вписываются в парадигмы функционального программирования, где функции избегают побочных эффектов, а данные рассматриваются как неизменяемые.

Создание и использование записей

Записи подобны неизменяемым объектам. Они имеют заданную структуру и не могут быть изменены после создания. Вот краткий обзор того, как использовать записи:

// Creating an immutable Record const kittyFacts = 
#{ name: "Turbodog", age: 17, favoriteToy: "Laser Pointer" }; 
// Accessing values 
console.log(kittyFacts.name); 
// Outputs: Turbodog 
console.log(kittyFacts.favoriteToy); 
// Outputs: Laser Pointer 
// Attempting to modify will create a new instance 
const updatedKittyFacts = #{ ...kittyFacts, age: 18 };
console.log(kittyFacts.age); 
// Outputs: 17 (unchanged) 
console.log(updatedKittyFacts.age); 
// Outputs: 18 (new instance)

В этом примере kittyFacts является неизменяемой записью. Любые изменения в ней, такие как обновление возраста, приводят к созданию новой обновленной записи KittyFacts, оставляя исходную запись kittyFacts нетронутой.

Работа с кортежами

Кортежи — это неизменяемые массивы, которые могут содержать фиксированное количество элементов. Они особенно полезны для представления упорядоченных коллекций значений, которые не следует изменять.

// Creating an immutable Tuple 
const concertSetlist = #[ "Tupelo", "Live Oak", "Strawberry Woman", "Elephant" ]; 
// Accessing values 
console.log(concertSetlist[0]);
 // Outputs: Tupelo 
console.log(concertSetlist[2]);
 // Outputs: Strawberry Woman 
// Attempting to modify will create a new instance
 const updatedSetlist = #[...concertSetlist, "Chaos and Clothes"]; 
console.log(concertSetlist.length); 
 // Outputs: 4 (unchanged) 
console.log(updatedSetlist.length);
// Outputs: 5 (new instance)
; // Доступ к значениям console.log(concertSetlist[0]); // Выходы: Тупело console.log(concertSetlist[2]); // Выходы: Женщина-клубника // Попытка изменить приведет к созданию нового экземпляра const обновленныйSetlist = #[...concertSetlist, "Хаос и одежда"]; console.log(concertSetlist.length); // Выходы: 4 (без изменений) console.log(обновленныйSetlist.length); // Выходы: 5 (новый экземпляр)

Здесь концертный список — это неизменяемый кортеж. При добавлении новой песни в сетлист создается новый обновленный кортеж Setlist, сохраняющий оригинал.

Расширенные операции с записями и кортежами


Записи и кортежи содержат полезные методы для неизменяемой обработки данных. Например, метод with для кортежей позволяет легко обновлять определенные индексы:

// Creating a Tuple 
const originalMixtape = #[ "If We Were Vampires", "World Leader Pretend", "Right Back to It" ];
 // Updating a specific index 
const updatedMixtape = originalMixtape.with(1, "Turn You Inside-Out"); 
console.log(originalMixtape); 
// Outputs: #[ "If We Were Vampires", "World Leader Pretend", "Right Back to It" ]; 
console.log(updatedMixtape); 
// Outputs: #[ "If We Were Vampires", "Turn You Inside-Out", "Right Back to It" ];
// Создание кортежа const originalMixtape = #[ «Если бы мы были вампирами», «Притворись мировым лидером», «Вернемся к этому» ]; // Обновление определенного индекса const updateMixtape = originalMixtape.with(1, «Вывернут вас наизнанку»); console.log(оригиналMixtape); // Выходы: #[ «Если бы мы были вампирами», «Притворись мировым лидером», «Вернемся к этому» ]; console.log(обновленныйMixtape); // Выходы: #[ «Если бы мы были вампирами», «Вывернули вас наизнанку», «Вернемся к этому» ];

В этом примере метод with обновляет трек с индексом 1, не изменяя исходный исходный микстейп.

Заключение

Неизменяемые структуры данных — записи и кортежи — были представлены в ECMAScript 2024 и представляют собой значительное улучшение JavaScript. Они помогают обеспечить согласованность данных, упрощают отладку и хорошо согласуются с практиками функционального программирования. Экспериментируя с этими неизменяемыми структурами, вы можете создавать более надежные и удобные в обслуживании приложения, избегая при этом распространенных сюрпризов и побочных эффектов, связанных с изменяемыми данными.

источники:

https://www.interactivated.me/blog/whats-new-in-javascript-top-10-exciting-features-for-2024

https://thenewstack.io/whats-new-for-javascript-developers-in-ecmascript-2024/

https://www.w3schools.com/js/js_2024.asp

https://github.com/tc39/proposal-record-tuple

https://tc39.es/proposal-record-tuple/tutorial/

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/wendyver/immutable-data-structures-records-and-tuples-in-ecma-2024-1n39?1. В случае нарушения прав обращайтесь по адресу [email protected]. удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3