Ruby

بهترین دوست یک برنامه نویس

Ruby

بهترین دوست یک برنامه نویس

ساختارهای تکرار، قسمت یکم

يكشنبه, ۲۵ اسفند ۱۳۹۲، ۰۷:۱۱ ق.ظ

این قسمت یکم، درباره ساختار های تکرار تو روبیه ...


each

این دستور روی خیلی از ساختار های داده کار میکنه. Hash Table، آرایه و ...

شما حتی میتونید این متود رو برای کلاس خودتون تعریف کنید. اینجوری از ویژگی های کتابخانه Enumerator بهره مند میشید که بعدا دربارش حرف خواهیم زد.

each برای یک آرایه، تمام اعضاش رو، به ترتیب از اول تا آخر، فراخونی میکنه و برای هر یک از اعضا، بلاک کدی که به این متود میفرستیم رو اجرا میکنه. مثل شکل زیر:

توضیح شکل: کاری که این برنامه میکنه اینه که، هر یک از عناصر آرایه رو با ایندکسشون چاپ میکنه.

 همونطور که  معلومه، اول یه آرایه به نام test درست میکنیم. بعد برای این آرایه متود each رو فراخونی میکنیم. اگه دقت کنید، می بینید که بعد از each کلمه کلیدی do و در پایان کلمه کلیدی end اومده. الان از بحث خارجه که توضیح بدم، ولی همین قدر بدونید که هر چی بین این دو دستور بیاد یه بلاک کد هست. توی این بلاک، ما یه متغییر تعریف کردیم. به این صورت |val|. ما میتونستیم به جای val هر اسم دیگه ای بذاریم. دلبخواهیه. این متغییر نشون دهنده ارزش هر یک از مقدار های موجود تو آرایه، توی هر بار تکرار بلاک کد هست (یعنی برای دفعه اول ارزشش a، برای دفعه دوم p و ...).

خط سوم برنامه کار چاپ رو انجام میده. دستور test.index(val)، متود index رو برای آرایه فراخونی میکنه. این متود، یه آرگومان میگیره، دنبال اون آرگومان توی آرایه میگرده و اگه پیداش کرد، ایندکسش رو برمیگردونه. اگه پیدا نکرد nil برمیگردونه. با استفاده از این مقدار بدست اومده و مقدار val، عناصر آرایه رو دونه به دونه چاپ میکنه. همین!

 

times

بعضی مواقع فقط میخواین که یه تکه کد فقط چند بار تکرار بشه. اون وقت این متود به دردتون میخوره. روش استفاده ازش رو اگه با مثال بیبیند بهتره:


اگه بخواین از یه شمارنده استفاده کنید میتونید مثل مثال مربوط به each، یه متغییر توی بلاک کد تعریف کنید. مثال مربوط به each رو میتونیم به شکل زیر پیاده سازی کنیم:

نظرات (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی