Skip to content

Commit ac107b3

Browse files
committed
edit chp 7
1 parent aec16d4 commit ac107b3

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

07_robot.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,13 +141,13 @@ console.log(first.place);
141141

142142
متد `move` باعث می‌شود که بسته، تحویل داده شود و این عمل در وضعیت بعدی قابل مشاهده است. اما وضعیت ابتدایی هنوز شرایطی را نشان می‌دهد که ربات در دفتر پست است و بسته تحویل داده نشده است.
143143

144-
## داده‌های پایا (Persistent Data)
144+
## داده‌های مانا (Persistent Data)
145145

146146
{{index "persistent data structure", mutability, ["data structure", immutable]}}
147147

148-
ساختارهای داده‌ای که تغییر نمی کنند را تغییرناپذیر (_((immutable))_) یا پایا (_persistent_) می‌نامند. این ساختار‌ها، بسیار شبیه به رشته‌ها و اعداد عمل می کنند، یعنی همیشه آن چیزی خواهند بود که هستند و به همین حالت می مانند، نه اینکه در زمان‌های مختلف محتوای مختلفی داشته باشند.
148+
ساختارهای داده‌ای که تغییر نمی کنند را تغییرناپذیر (_((immutable))_) یا مانا (_persistent_) می‌نامند. این ساختار‌ها، بسیار شبیه به رشته‌ها و اعداد عمل می کنند، یعنی همیشه آن چیزی خواهند بود که هستند و به همین حالت می مانند، نه اینکه در زمان‌های مختلف محتوای مختلفی داشته باشند.
149149

150-
در جاوااسکریپت، تقریبا همه چیز را _می‌توان_ تغییر داد. بنابراین کار کردن با مقدارهایی که قرار است پایا باشند موانعی خواهند داشت. تابعی به نام <bdo>`Object.freeze`</bdo> وجود دارد که در صورت اعمال به یک شیء، باعث می‌شود نتوان خاصیت‌های آن شیء را تغییر داد. اگر قصد دارید تا جوانب احتیاط را رعایت کنید، می‌توانید از این متد برای جلوگیری از تغییر شیءتان استفاده کنید. ثابت‌ نگه‌داشتن شیء باعث می‌شود که کامپیوتر کار بیشتری انجام دهد، و در نظر نگرفتن به‌روز‌رسانی اشیاء، به احتمال زیاد افراد را به اشتباه‌ می اندازد. بنابراین من معمولا ترجیح می دهم که به دیگران اعلام کنم که یک فلان شیء را نباید دستکاری کرد و امیدوار باشم که دیگران هم رعایت کنند.
150+
در جاوااسکریپت، تقریبا همه چیز را _می‌توان_ تغییر داد. بنابراین کار کردن با مقدارهایی که قرار است مانا باشند موانعی خواهند داشت. تابعی به نام <bdo>`Object.freeze`</bdo> وجود دارد که در صورت اعمال به یک شیء، باعث می‌شود نتوان خاصیت‌های آن شیء را تغییر داد. اگر قصد دارید تا جوانب احتیاط را رعایت کنید، می‌توانید از این متد برای جلوگیری از تغییر شیءتان استفاده کنید. ثابت‌ نگه‌داشتن شیء باعث می‌شود که کامپیوتر کار بیشتری انجام دهد، و در نظر نگرفتن به‌روز‌رسانی اشیاء، به احتمال زیاد افراد را به اشتباه‌ می اندازد. بنابراین من معمولا ترجیح می دهم که به دیگران اعلام کنم که یک فلان شیء را نباید دستکاری کرد و امیدوار باشم که دیگران هم رعایت کنند.
151151

152152
```
153153
let object = Object.freeze({value: 5});
@@ -162,7 +162,7 @@ console.log(object.value);
162162

163163
برای یک سیستم کوچک مانند چیزی که در این فصل در حال ساخت آن هستیم، می‌توانیم از پس این پیچیدگی اضافی بر بیاییم. اما مهم‌ترین محدودیتی که در نوع سیستم‌هایی که می‌توانیم بسازیم وجود دارد آن است که تا چه حد می‌توانیم آن سیستم‌ها را درک کنیم. هر چیزی که درک کد شما را آسان‌تر کند، باعث می‌شود که بتوانید سیستم بلندپروازانه‌تری بسازید.
164164

165-
متاسفانه، با وجود اینکه درک سیستمی که با ساختارهای داده‌ی پایا ساخته شده آسان تر است، _طراحی_ آن، مخصوصا وقتی که خود زبان برنامه‌نویسی کمکی نمی‌کند، ممکن است کمی مشکل تر باشد. با این حال، ما به دنبال فرصت‌هایی برای استفاده از ساختارهای داده پایا در این کتاب خواهیم بود، همچنین از موارد قابل تغییر نیز استفاده خواهیم کرد.
165+
متاسفانه، با وجود اینکه درک سیستمی که با ساختارهای داده‌ی مانا ساخته شده آسان تر است، _طراحی_ آن، مخصوصا وقتی که خود زبان برنامه‌نویسی کمکی نمی‌کند، ممکن است کمی مشکل تر باشد. با این حال، ما به دنبال فرصت‌هایی برای استفاده از ساختارهای داده مانا در این کتاب خواهیم بود، همچنین از موارد قابل تغییر نیز استفاده خواهیم کرد.
166166

167167
## شبیه‌سازی
168168

@@ -438,11 +438,11 @@ if}}
438438

439439
hint}}
440440

441-
### گروه پایا (Persistent Group)
441+
### گروه مانا (Persistent Group)
442442

443443
{{index "persistent group (exercise)", "persistent data structure", "Set class", "set (data structure)", "Group class", "PGroup class"}}
444444

445-
اکثر ساختارهای داده‌ای که به صورت استاندارد در جاوااسکریپت وجود دارند، برای استفاده به عنوان ساختار داده‌ی پایا، خیلی مناسب نیستند. آرایه ها دارای متدهای `slice` و `concat` می‌باشند که این امکان را فراهم می سازند تا آرایه های جدید را بدون تغییر آرایه‌ی اصلی ایجاد کنیم. اما مثلا `Set`، متدی برای ایجاد یک مجموعه‌ی جدید که آیتمی اضافه یا کم داشته باشد ندارد.
445+
اکثر ساختارهای داده‌ای که به صورت استاندارد در جاوااسکریپت وجود دارند، برای استفاده به عنوان ساختار داده‌ی مانا، خیلی مناسب نیستند. آرایه ها دارای متدهای `slice` و `concat` می‌باشند که این امکان را فراهم می سازند تا آرایه های جدید را بدون تغییر آرایه‌ی اصلی ایجاد کنیم. اما مثلا `Set`، متدی برای ایجاد یک مجموعه‌ی جدید که آیتمی اضافه یا کم داشته باشد ندارد.
446446

447447
کلاس جدیدی به نام `PGroup` بنویسید، شبیه‌ به کلاس `Group` که در [فصل
448448
?](object#groups) نوشتید، که مجموعه‌ای از مقادیر را ذخیره می‌کند. مانند `Group` دارای متدهای `add،` `delete` و `has` خواهد بود.

0 commit comments

Comments
 (0)