"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > هياكل البيانات غير القابلة للتغيير: السجلات والصفوف في ECMA 4

هياكل البيانات غير القابلة للتغيير: السجلات والصفوف في ECMA 4

تم النشر بتاريخ 2024-11-08
تصفح:508

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 updateSetlist = #[...concertSetlist, "الفوضى والملابس"]; console.log(concertSetlist.length); // النواتج: 4 (دون تغيير) console.log(updatedSetlist.length); // المخرجات: 5 (مثيل جديد)

هنا، للحفلات الموسيقيةSetlist عبارة عن Tuple غير قابل للتغيير. تؤدي إضافة أغنية جديدة إلى قائمة الأغاني إلى إنشاء مجموعة محدثة جديدة من قائمة الأغاني، مع الحفاظ على الأغنية الأصلية.

العمليات المتقدمة مع السجلات والصفوف


تأتي السجلات والصفوف مع طرق مفيدة للتعامل مع البيانات بشكل ثابت. على سبيل المثال، يتيح التابع with الخاص بـ Tuples إجراء تحديثات سهلة على مؤشرات محددة:

// 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" ];
// إنشاء Tuple const originalMixtape = #

; // تحديث فهرس محدد const updateMixtape = originalMixtape.with(1, "Turn You Inside-Out"); console.log(originalMixtape); // المخرجات: #

; console.log(updatedMixtape); // المخرجات: #

؛

في هذا المثال، تقوم الطريقة 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/Immutable Data Structures: Records and Tuples in ECMA 4

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/wendyver/immutable-data-structures-records-and-tuples-in-ecma-2024-1n39?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3