إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

HowTo Reflection in Ruby

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • HowTo Reflection in Ruby

    Reflection

    بكل بساطة هى امكانية التعامل مع الميتاداتا الخاصة بالبرنامج ومكوناته .. تقدر تخلى روبى تحكيلك على كل اسرارها واعمق افكارها lol

    الناس اللى بتبرمج IDEs مش آلهة بالعكس المعظم بيستخدم ال reflection!

    كود:
    s="Hola!"
    مجرد object عادى

    class
    هى ميثود بتستخدم فى الحصول على نوع ال class الذى تم عمل ال object منه
    كود:
    #s is an object from what?
    puts s.class
    #output: String
    class.name
    بتستخدم فى الحصول على إسم الclass
    كود:
    #what is the name of this class ?
    puts s.class.name 
    #output: String
    superclass
    بتستخدم فى الحصول على ال parent class لل class
    كود:
    #from what String  was inherited?
    puts String.superclass #object is the parent class of 'em all!
    included_modules
    للحصول على ال modules اللى معمول ليها include فى ال class
    كود:
    #the included modules in String
    p String.included_modules
    #output: [Enumerable, Comparable, Kernel]
    
    p Object.included_modules
    #output: [Kernel]
    object_id
    كل object ليه unique id وهذه الميثود بتستخدم فى الحصول على ذلك ال id
    كود:
    #each object has a unique id.
    s1="Hi"
    puts s1.object_id  #6
    
    s2="Hi"
    puts s2.object_id  #8
    لاحظ التالى فى حال إن ال 2 بيشيرو لنفس ال object
    كود:
    s1="Hi"
    s2=s1 #points to s1
    
    puts s1.object_id #6
    puts s2.object_id #6
    constants

    هى ميثود بتعيد array فيها ال constants الموجودة
    كود:
    p Math.constants
    #output: ["E", "PI"]
    local_variables
    بتستخدم فى الحصول على ال local variables فى البرنامج
    كود:
    #get the local variables
    p local_variables
    #output: ["s", "s1", "s2"]
    global_variables
    بتستخدم فى الحصول على ال global variables
    كود:
    $globString="What's up????"
    $anotherGlobString="CRUEL, WORLD!"
    
    #gets the global variables
    p global_variables
    #output
    #["$FILENAME", "$LOADED_FEATURES", "$anotherGlobString", 
    #  "$VERBOSE", "$globString", "$PROGRAM_NAME", "$LOAD_PATH", 
    #  "$DEBUG", "$stdin", "$KCODE", "$stderr", "$stdout", "$defout", 
    #  "$deferr", "$-I", "$`", "$-K", "$\\", "$_", "$!", 
    #  "$\"", "$-a", "$-d", "$~", "[email protected]", "$?", "$>", 
    #  "$=", "$<", "$:", "$0", "$.", "$/", "$,", "$-n", 
    #  "$*", "$SAFE", "$+", "$-p", "$&", "$'", "$$", "$-l"]
    instance_variables
    بتستخدم للحصول على ال instance_variables
    كود:
    p instance_variables # []
    methods
    بتستخدم للحصول على ال methods الخاصة بال class
    كود:
    #get all of the methods in string
    methodsAry=String.methods
    p methodsAry
    #output:
    #["new", "superclass", "allocate", "inherited", "initialize_copy",
    .....................
    #  "class_eval", ">", "<", "private_class_method", 
    , 
    #  "protected_methods", "nil?", "freeze", "is_a?", "eql?"]
    instance_methods
    بتستخدم فى الحصول على ال methods الخاصة بال instance
    كود:
    #instance methods
    p String.instance_methods
    private_methods
    بتستخدم فى الحصول على ال private methods الموجودة!
    كود:
    #get the private methods.
    p String.private_methods
    public_methods
    للحصول على ال public methods
    protected_methods
    للحصول على ال protected methods
    singleton_methods
    بيستخدم فى الحصول على ال singleton methods
    protected_methods
    للحصول على ال protected methods
    ونفس الشئ مع
    كود:
    [private|protected|public]_instance_methods
    كود:
    respond_to?(:methodName)
    بتستخدم فى معرفة هل يمكن إستخدام الميثود methodName مع ال object ام لأ
    كود:
    s="Hello"
    puts s.respond_to?(:upcase) #true: can use upcase method 
    puts s.respond_to?(:keys) #false: can't use keys method
    class hierarchy
    عمرك تساءلت إزاى بتحد فى ال IDEs الsuper classes اللى class معين مشتق منهم ؟ تابع المثال التالى ومش هتحتار تانى :D
    كود:
    class First < String
      
    end
    
    class Second < First
      
    end
    
    class Third < Second
    
    end
    
    c=Third
    
    while c
      print(c) 
      print(" < ")
      c=c.superclass
      
    end
    puts
    #output: Third < Second < First < String < Object
    التعديل الأخير تم بواسطة StrikerX; الساعة 19-02-2008, 06:41 AM.
    Programming-Fr34ks[dot]NET
    Ma Weblog
    ابدأ بتعلم Python | Ruby
    كتاب البايثون متوافر الآن
    لا اتواجد بهذا المنتدى ... للإتصال

  • #2
    • سلام عليكم
    • وصباح النور على احلى ناس .. :frown:
    • بص بقى يا احمد الصنف الي بتشرح بيه شكله غالي ومرره ممتاز .. :doctor:
    • تم تسيف الدرس ... وباذن الله الدروس رايحه تجمع بصيغه pdf ..
    • يومك عسل يامعلم ..
    • bad3r
    :argeeleh:
    Twitter
    : @Linux4SA

    تعليق


    • #3
      المشاركة الأصلية بواسطة BAD3R مشاهدة المشاركة
      • سلام عليكم
      • وصباح النور على احلى ناس .. :frown:
      • بص بقى يا احمد الصنف الي بتشرح بيه شكله غالي ومرره ممتاز .. :doctor:
      • تم تسيف الدرس ... وباذن الله الدروس رايحه تجمع بصيغه pdf ..
      • يومك عسل يامعلم ..
      • bad3r
      • وعليكم السلام
      • صباح النور على ابدر ناس
      • هههههههههههههه اتفضل ياعمنا انت تأمر .. وستورم بردو بيوزع بس فى الخباثة كدا :doctor:
      • ان شاله الموضوع يعجبك
      • يومك زى الفل ياخديوى
      • ahmed
      Programming-Fr34ks[dot]NET
      Ma Weblog
      ابدأ بتعلم Python | Ruby
      كتاب البايثون متوافر الآن
      لا اتواجد بهذا المنتدى ... للإتصال

      تعليق


      • #4
        جميـل جـدا يا ابو حميـد والـروبي من اقـوي اللغـات الي بتتعـامل مع الـ Reflections بصوره ممتـازه

        تعليق


        • #5
          تقدر تخلى روبى تحكيلك على كل اسرارها واعمق افكارها
          هو ده السر والاهتمام المفاجئ بروبي يعني ماشي ...
          وستورم بردو بيوزع بس فى الخباثة كدا
          والله ال HASH غلي اليومين دول خاصة الي معمول بال md5 وانت فاهم

          جدعان احنا بنهظر سترايكر بيدوخ من المياه الساقعه مش حد يفهم غلط

          nice article
          BOOOF , I AM GONE
          Still , you gotta wait for my PRESENT :D
          C programming arabic Tutorial|Programming-fr34ks

          تعليق


          • #6
            كل الاحترام اخي سترايكير ..
            شرح جميل .. وشايف عينك باديه تطلع على روبي .. (ما بصير يا عم ههههه )
            ^_^
            GCS

            تعليق


            • #7
              المشاركة الأصلية بواسطة St0rM-MaN مشاهدة المشاركة
              هو ده السر والاهتمام المفاجئ بروبي يعني ماشي ...

              والله ال HASH غلي اليومين دول خاصة الي معمول بال md5 وانت فاهم

              جدعان احنا بنهظر سترايكر بيدوخ من المياه الساقعه مش حد يفهم غلط

              nice article
              اهدى يارب عقبال ماتتقلب sha512


              المشاركة الأصلية بواسطة CPU مشاهدة المشاركة
              كل الاحترام اخي سترايكير ..
              شرح جميل .. وشايف عينك باديه تطلع على روبي .. (ما بصير يا عم ههههه )
              ^_^
              إييه يابنى فينك هو الواحد لازم يتكلم على hot chick عشان نشوفك ولا إيه :P
              Programming-Fr34ks[dot]NET
              Ma Weblog
              ابدأ بتعلم Python | Ruby
              كتاب البايثون متوافر الآن
              لا اتواجد بهذا المنتدى ... للإتصال

              تعليق

              يعمل...
              X