You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 07_robot.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -141,13 +141,13 @@ console.log(first.place);
141
141
142
142
متد `move` باعث میشود که بسته، تحویل داده شود و این عمل در وضعیت بعدی قابل مشاهده است. اما وضعیت ابتدایی هنوز شرایطی را نشان میدهد که ربات در دفتر پست است و بسته تحویل داده نشده است.
143
143
144
-
## دادههای پایا (Persistent Data)
144
+
## دادههای مانا (Persistent Data)
145
145
146
146
{{index "persistent data structure", mutability, ["data structure", immutable]}}
147
147
148
-
ساختارهای دادهای که تغییر نمی کنند را تغییرناپذیر (_((immutable))_) یا پایا (_persistent_) مینامند. این ساختارها، بسیار شبیه به رشتهها و اعداد عمل می کنند، یعنی همیشه آن چیزی خواهند بود که هستند و به همین حالت می مانند، نه اینکه در زمانهای مختلف محتوای مختلفی داشته باشند.
148
+
ساختارهای دادهای که تغییر نمی کنند را تغییرناپذیر (_((immutable))_) یا مانا (_persistent_) مینامند. این ساختارها، بسیار شبیه به رشتهها و اعداد عمل می کنند، یعنی همیشه آن چیزی خواهند بود که هستند و به همین حالت می مانند، نه اینکه در زمانهای مختلف محتوای مختلفی داشته باشند.
149
149
150
-
در جاوااسکریپت، تقریبا همه چیز را _میتوان_ تغییر داد. بنابراین کار کردن با مقدارهایی که قرار است پایا باشند موانعی خواهند داشت. تابعی به نام <bdo>`Object.freeze`</bdo> وجود دارد که در صورت اعمال به یک شیء، باعث میشود نتوان خاصیتهای آن شیء را تغییر داد. اگر قصد دارید تا جوانب احتیاط را رعایت کنید، میتوانید از این متد برای جلوگیری از تغییر شیءتان استفاده کنید. ثابت نگهداشتن شیء باعث میشود که کامپیوتر کار بیشتری انجام دهد، و در نظر نگرفتن بهروزرسانی اشیاء، به احتمال زیاد افراد را به اشتباه می اندازد. بنابراین من معمولا ترجیح می دهم که به دیگران اعلام کنم که یک فلان شیء را نباید دستکاری کرد و امیدوار باشم که دیگران هم رعایت کنند.
150
+
در جاوااسکریپت، تقریبا همه چیز را _میتوان_ تغییر داد. بنابراین کار کردن با مقدارهایی که قرار است مانا باشند موانعی خواهند داشت. تابعی به نام <bdo>`Object.freeze`</bdo> وجود دارد که در صورت اعمال به یک شیء، باعث میشود نتوان خاصیتهای آن شیء را تغییر داد. اگر قصد دارید تا جوانب احتیاط را رعایت کنید، میتوانید از این متد برای جلوگیری از تغییر شیءتان استفاده کنید. ثابت نگهداشتن شیء باعث میشود که کامپیوتر کار بیشتری انجام دهد، و در نظر نگرفتن بهروزرسانی اشیاء، به احتمال زیاد افراد را به اشتباه می اندازد. بنابراین من معمولا ترجیح می دهم که به دیگران اعلام کنم که یک فلان شیء را نباید دستکاری کرد و امیدوار باشم که دیگران هم رعایت کنند.
151
151
152
152
```
153
153
let object = Object.freeze({value: 5});
@@ -162,7 +162,7 @@ console.log(object.value);
162
162
163
163
برای یک سیستم کوچک مانند چیزی که در این فصل در حال ساخت آن هستیم، میتوانیم از پس این پیچیدگی اضافی بر بیاییم. اما مهمترین محدودیتی که در نوع سیستمهایی که میتوانیم بسازیم وجود دارد آن است که تا چه حد میتوانیم آن سیستمها را درک کنیم. هر چیزی که درک کد شما را آسانتر کند، باعث میشود که بتوانید سیستم بلندپروازانهتری بسازید.
164
164
165
-
متاسفانه، با وجود اینکه درک سیستمی که با ساختارهای دادهی پایا ساخته شده آسان تر است، _طراحی_ آن، مخصوصا وقتی که خود زبان برنامهنویسی کمکی نمیکند، ممکن است کمی مشکل تر باشد. با این حال، ما به دنبال فرصتهایی برای استفاده از ساختارهای داده پایا در این کتاب خواهیم بود، همچنین از موارد قابل تغییر نیز استفاده خواهیم کرد.
165
+
متاسفانه، با وجود اینکه درک سیستمی که با ساختارهای دادهی مانا ساخته شده آسان تر است، _طراحی_ آن، مخصوصا وقتی که خود زبان برنامهنویسی کمکی نمیکند، ممکن است کمی مشکل تر باشد. با این حال، ما به دنبال فرصتهایی برای استفاده از ساختارهای داده مانا در این کتاب خواهیم بود، همچنین از موارد قابل تغییر نیز استفاده خواهیم کرد.
166
166
167
167
## شبیهسازی
168
168
@@ -438,11 +438,11 @@ if}}
438
438
439
439
hint}}
440
440
441
-
### گروه پایا (Persistent Group)
441
+
### گروه مانا (Persistent Group)
442
442
443
443
{{index "persistent group (exercise)", "persistent data structure", "Set class", "set (data structure)", "Group class", "PGroup class"}}
444
444
445
-
اکثر ساختارهای دادهای که به صورت استاندارد در جاوااسکریپت وجود دارند، برای استفاده به عنوان ساختار دادهی پایا، خیلی مناسب نیستند. آرایه ها دارای متدهای `slice` و `concat` میباشند که این امکان را فراهم می سازند تا آرایه های جدید را بدون تغییر آرایهی اصلی ایجاد کنیم. اما مثلا `Set`، متدی برای ایجاد یک مجموعهی جدید که آیتمی اضافه یا کم داشته باشد ندارد.
445
+
اکثر ساختارهای دادهای که به صورت استاندارد در جاوااسکریپت وجود دارند، برای استفاده به عنوان ساختار دادهی مانا، خیلی مناسب نیستند. آرایه ها دارای متدهای `slice` و `concat` میباشند که این امکان را فراهم می سازند تا آرایه های جدید را بدون تغییر آرایهی اصلی ایجاد کنیم. اما مثلا `Set`، متدی برای ایجاد یک مجموعهی جدید که آیتمی اضافه یا کم داشته باشد ندارد.
446
446
447
447
کلاس جدیدی به نام `PGroup` بنویسید، شبیه به کلاس `Group` که در [فصل
448
448
?](object#groups) نوشتید، که مجموعهای از مقادیر را ذخیره میکند. مانند `Group` دارای متدهای `add،``delete` و `has` خواهد بود.
0 commit comments