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: 1-js/05-data-types/06-iterable/article.md
+17-1Lines changed: 17 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,10 +28,17 @@ let range = {
28
28
29
29
برای اینکه شیء `range` را حلقهپذیر کنیم (و به این ترتیب بگذاریم `for..of` کار کند) ما نیاز داریم که یک متد به اسم `Symbol.iterator` را به شیء اضافه کنیم ( یک سمبل خاص درون ساخت که فقط برای این کار است).
30
30
31
+
<<<<<<< HEAD
31
32
1. زمانی که `for..of` شروع میشود، متد را یک بار صدا میزند (یا اگر پیدا نشود ارور میدهد). متد باید یک *حلقهزننده* را برگرداند -- شیءای که متد `next` را دارد.
32
33
2. همینطور رو به جلو، `for..of`*تنها با شیء برگردانده شده* کار میکند.
33
34
3. زمانی که `for..of` مقدار بعدی را نیاز دارد، روی آن شیء `next()` را صدا میزند.
34
35
4. نتیجه `next()` باید به شکل `{done: Boolean, value: any}` باشد که `done=true` به معنی پایان حلقهزدن است، در غیر این صورت `value` مقدار بعدی خواهد بود.
36
+
=======
37
+
1. When `for..of` starts, it calls that method once (or errors if not found). The method must return an *iterator* -- an object with the method `next`.
38
+
2. Onward, `for..of` works *only with that returned object*.
39
+
3. When `for..of` wants the next value, it calls `next()` on that object.
40
+
4. The result of `next()` must have the form `{done: Boolean, value: any}`, where `done=true` means that the loop is finished, otherwise `value` is the next value.
41
+
>>>>>>> 0f748275e20a81700c8514f22a7cc80c4422d09c
35
42
36
43
اینجا پیادهسازی کامل `range` را به همراه ملاحظات داریم:
37
44
@@ -44,11 +51,16 @@ let range = {
44
51
// 1. در ابتدا این متد صدا زده میشود for..of با صدازدن
45
52
range[Symbol.iterator] =function() {
46
53
54
+
<<<<<<<HEAD
47
55
// :این متد شیء حلقهزننده را برمیگرداند...
48
56
// 2. فقط با این حلقهزننده کار میکند، که از آن مقدار بعدی را درخواست میکند for..of ،همینطور رو به جلو
57
+
=======
58
+
// ...it returns the iterator object:
59
+
// 2. Onward, for..of works only with the iterator object below, asking it for next values
60
+
>>>>>>>0f748275e20a81700c8514f22a7cc80c4422d09c
49
61
return {
50
62
current:this.from,
51
-
last:this.to,
63
+
last:this.to,
52
64
53
65
// 3. فراخوانی میشود for..of در هر دور حلقه توسط next()
54
66
next() {
@@ -270,7 +282,11 @@ for (let char of str) {
270
282
alert(chars);
271
283
```
272
284
285
+
<<<<<<< HEAD
273
286
...اما این روش کوتاهتر است.
287
+
=======
288
+
...But it is shorter.
289
+
>>>>>>> 0f748275e20a81700c8514f22a7cc80c4422d09c
274
290
275
291
ما حتی میتوانیم یک `slice` که از جفتهای جایگیر آگاه است را روی آن بسازیم:
0 commit comments