متغیر ها فضایی از حافظه و یک نام برای اطلاعات ذخیره شده اند.برای مثال اگر رشته ی ما "linus torvalds" باشد بجای اینکه در سرتاسر برنامه عین آن را بنویسم آن را در یک متغیر به عنوان مثال name ذخیره میکنیم و از آن به بعد در برنامه تنها متغیر name  را فراخوانی میکنیم.

در روبی تعریف متغیر ها ساده است : هروقت نیاز دارید تعریف کنید و مقدار دهید. نیازی به تعریف آن بدون مقدار ندارید و همچنین به دلیل داینامیک تایپ بودن روبی نیازی به مشخص کردن نوع داده ندارید.

انواع متغیرها در روبی عبارتند از :

  • متغیر های محلی
  •  متغیر های عمومی
  •  متغیر های Instance
  •  متغیر های کلاس

متغیر های محلی

متغیرهای محلی در روبی بعد از تعریف تنها در محدوده‌ی بلاک خود در دسترس هستند و خارج از آن در دسترس نیستند. متغیرهای محلی با یکی از حروف الفبا یا علامت _ باید شروع شوند. برای تعریف یک متغیر محلی با نام name  که حاوی رشته ی کاراکتری  "linus torvalds" است بصورت زیر عمل میکنیم :

name = "linus torvalds"

 به عنوان مثال میتوانیم این متغیر را چاپ کنیم :
puts name
 خروجی این دستور مقدار "linus torvalds" را در خروجی چاپ می‌کند.


اگر لازم داشتید یک متغیر بدون مقداردهی اولیه تعریف کنید، به آن متغیر مقدار nil بدهید. مقدار nil به معنای هیچ‌چیز در زبان روبی عمل میکند. در سایر زبان‌های برنامه نویسی این مقدار معمولا null است. برای مثال متغیر زیر یک متغیر خالی است:
empty_var = nil


متغیرهای عمومی

متغیرهای عمومی تمام ویژگی های متغیرهای محلی را دارند با این تفاوت که نامگذاری آنها با علامت $ شروع میشود و ویژگی متفاوت آنها نسبت به متغیر های محلی در این است که بصورت عمومی در تمام scope ها تعریف شده و قابل در دسترس‌اند. به زبان ساده‌تر متغیرهای عمومی در تمامی بخش‌های مختلف برنامه قابل دستیابی و استفاده هستند و مانند مثال زیر تعریف میشوند :

$global_var = "Hello Globale village"


متغیر های Instance

این متغیر ها با علامت @ شروع میشوند و یک instance به self ایجاد میکنند.این موضوع در بحث کلاس ها و اشیاء بصورت کامل تشریح میشود.

@num = 12345

متغیر های کلاس

متغیرهای کلاس با @@ شروع میشوند و در کلاس ها قبل از تعریف متدهای کلاس تعریف شده و مقدار دهی میشوند و در تمام اینستنس‌های آن کلاس قابل دستیابی و استفاده هستند بطوریکه تغییر در مقدار متغیر کلاس در یک اینستنس در بقیه‌ی اینتسنس‌ها هم تغییر میکند.
@@ins_no = 10