English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

المتغيرات الـ Ruby

المتغير هو مكان التخزين الذي يحتوي على أي بيانات يمكن استخدامها من قبل أي برنامج.

يدعم Ruby خمس أنواع من العوامل.

  • باستخدام الحروف الصغيرة أو الشرطية في البداية: المتغيرات (Variable).

  • باستخدام $ في البداية: المتغيرات العالمية (Global variable).

  • باستخدام @ في البداية: المتغيرات المثيلة (Instance variable).

  • باستخدام @@ في البداية: المتغيرات الكلاسيكية (Class variable) يتم مشاركة المتغيرات الكلاسيكية في سلسلة الإرث بأكملها

  • باستخدام الحروف الكبيرة: الثوابت (Constant).

لقد تعرفت على هذه العوامل بشكل عام في الفصول السابقة، هذا الفصل سيقوم بشرح هذه العوامل الخمسة بشكل مفصل.

Ruby العوامل العالمية

全局变量以 $ 开头。未初始化的全局变量的值为 nil,在使用 -w 选项后,会产生警告。

给全局变量赋值会改变全局状态,所以不建议使用全局变量。

下面的示例显示了全局变量的用法。

مثال على الإنترنت

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
$global_variable = 10
class Class1
  def print_global
      puts "全局变量在 Class1 中输出为 #$global_variable"
  end
end
class Class2
  def print_global
      puts "全局变量在 Class2 中输出为 #$global_variable"
  end
end
 
class1obj = Class1.new
class1obj.print_global
class2obj = Class2.new
class2obj.print_global

在这里,$global_variable 是全局变量。这将产生以下结果:

注意:在 Ruby 中,您可以通过在变量或常量前面放置 # 字符,来访问任何变量或常量的值。

全局变量在 Class1 中输出为 10
全局变量在 Class2 中输出为 10

Ruby 示例变量

示例变量以 @ 开头。未初始化的示例变量的值为 nil,在使用 -w 选项后,会产生警告。

下面的示例显示了示例变量的用法。

مثال على الإنترنت

#!/usr/bin/ruby
 
class Customer
   initialize(id, name, addr)
      @cust_id=id
      @cust_name=name
      @cust_addr=addr
   end
   def display_details()
      puts "رقم هوية العميل @cust_id"
      puts "اسم العميل @cust_name"
      puts "عنوان العميل @cust_addr"
    end
end
 
# إنشاء رمز
cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2=Customer.new("2", "Poul", "New Empire road, Khandala")
 
# استدعاء الدالة
cust1.display_details()
cust2.display_details()

在这里,@cust_id、@cust_name 和 @cust_addr 是示例变量。这将产生以下结果:

Customer id 1
Customer name John
Customer address Wisdom Apartments, Ludhiya
Customer id 2
Customer name Poul
Customer address New Empire road, Khandala

Ruby 类变量

类变量以 @@ 开头,且必须初始化后才能在方法定义中使用。

引用一个未初始化的类变量会产生错误。类变量在定义它的类或模块的子类或子模块中可共享使用。

在使用 -w 选项后,重载类变量会产生警告。

下面的示例显示了类变量的用法。

مثال على الإنترنت

#!/usr/bin/ruby
 
class Customer
   @@no_of_customers=0
   initialize(id, name, addr)
      @cust_id=id
      @cust_name=name
      @cust_addr=addr
   end
   def display_details()
      puts "رقم هوية العميل @cust_id"
      puts "اسم العميل @cust_name"
      puts "عنوان العميل @cust_addr"
    end
    def total_no_of_customers()
       @@no_of_customers += 1
       puts "عدد العملاء الكلي: #@@no_of_customers"
    end
end
 
# إنشاء رمز
cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2=Customer.new("2", "Poul", "New Empire road, Khandala")
 
# استدعاء الدالة
cust1.total_no_of_customers()
cust2.total_no_of_customers()

في هذا السياق، @@no_of_customers هو متغير فئة. سيؤدي ذلك إلى نتائج التالي:

عدد العملاء الكلي: 1
عدد العملاء الكلي: 2

المتغيرات المحلية Ruby

تبدأ المتغيرات المحلية بأحرف صغيرة أو شرطية _. نطاق المتغيرات المحلية من class،module،def أو do إلى النهاية المقابلة أو من الأسهم الكبيرة إلى الأسهم الصغيرة {}.

عند استدعاء متغير محلي غير مُقيم، يتم تفسيره كاستدعاء دالة بدون معاملات.

يمكن اعتبار تعيين قيمة لمتغير محلي غير مُقيم كإعلان متغير. سيبقى المتغير قائمًا حتى نهاية المجال الحالي. يمكن تحديد حياة المتغيرات المحلية عند تحليل البرنامج من قبل Ruby.

في المثال السابق، المتغيرات المحلية هي id،name وaddr.

المعادلات الدائمة Ruby

تبدأ المعادلات الدائمة بأحرف كبيرة. يمكن الوصول إلى المعادلات الدائمة المُحددة داخل فئة أو وحدة من داخلها، والوصول إلى المعادلات الدائمة المحددة خارجها يمكن القيام بها بشكل عالمي.

لا يمكن تعريف المعادلات الدائمة داخل الدوال. ستسبب تعريف معادلة غير مُقيمة خطأ. ستظهر تحذير عند تعيين قيمة لمعادلة مُقيمة.

مثال على الإنترنت

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
class Example
   VAR1 = 100
   VAR2 = 200
   def show
       puts "قيمة الكوامن الأولى هي #{VAR1}"
       puts "قيمة الكوامن الثانية هي #{VAR2}"
   end
end
 
# إنشاء رمز
object=Example.new()
object.show

في هذا السياق، VAR1 و VAR2 هي كوامن. هذا سينتج النتيجة التالية:

قيمة الكوامن الأولى هي 100
قيمة الثانية للكوامن هي 200

متغيرات الـ Ruby المزيفة

هي متغيرات خاصة، تملك مظهر متغيرات المحلية، لكن سلوكها مثل الكوامن. لا يمكنك تعيين أي قيمة لهذه المتغيرات.

  • self: الرمز المستقبل الحالي.

  • true: يمثل القيمة true.

  • false: يمثل القيمة false.

  • nil: يمثل القيمة غير المحددة.

  • __FILE__: اسم ملف المصدر الحالي.

  • __LINE__: رقم السطر الحالي في ملف المصدر.