نتائج البحث

اذهب إلى التنقل اذهب إلى البحث

الصنف Class في روبي

تُعدُّ الأصناف كائناتٍ من الدرجة الأولى (first-class objects) في روبي، وتعدُّ جميعها نُسخٌ من الصنف Class. عادةً، يمكن عادةً إنشاء صنف جديد بالشكل التالي: class Name # تكتب هنا الشيفرة التي تعرف سلوك الصنف end عندما يُنشَأ صنف جديد، يهيَّأ كائن من النوع Class ويسند إلى ثابت عام (global constant، هو Name في المثال السابق). عند استدعاء Name.new لإنشاء كائن جديد، يُنفَّذ التابع new الخاص بالصنف Class بشكل افتراضي. يمكن إثبات ذلك من خلال إعادة تعريف التابع new: class Class alias old_new ...

التابع new في الصنف Class في روبي

يستدعي التابع new التابعَ allocate لإنشاء كائن جديد من الصنف class، ثم يستدعي التابع initialize مع ذلك الكائن المنشأ ويُمرِّر إليه وسائط محددة. هذا هو التابع الذي يُستدعى كلما أريد إنشاء كائن باستخدام التابع ‎.new. البنية العامة new(args, ...) → obj المعاملات args الوسيط المراد تمريره إلى التابع initialize عند استدعائه. ... الوسائط الأخرى المراد تمريرها إلى التابع initialize عند استدعائه. القيم المعادة يعاد الكائن الذي أنشئ. انظر أيضًا التابع allocate: يحجز مساحةً من الذاكرة لكائن جديد من الصنف class ...

التابع superclass في الصنف Class في روبي

يعيد التابع superclass الصنف الأب (superclass) للصنف المستدعى معه. البنية العامة superclass → a_super_class or nil القيمة المعادة يعاد الصنف الأب للصنف المعطى أو القيمة nil إن لم يكن للصنف المعطى صنف أب. أمثلة مثال على استخدام التابع superclass: File.superclass #=> IO IO.superclass #=> Object Object.superclass #=> BasicObject class Foo; end class Bar < Foo; end Bar.superclass ...

التابع allocate في الصنف Class في روبي

يحجز التابع allocate مساحةً من الذاكرة لكائن جديد من الصنف class دون استدعاء التابع initialize مع النسخة (instance) الجديدة. يجب أن يكون الكائن المُعاد نسخةً من الصنف class. البنية العامة allocate() → obj القيم المعادة يعاد كائن من الصنف class. أمثلة مثال على استخدام التابع allocate: klass = Class.new do def initialize(*args) @initialized = true end def initialized? @initialized || false end end klass.allocate.initialized? #=> false انظر أيضًا التابع new: يُنشئ صنفًا جديدًا مجهولًا غير مسمى (unnamed) من ...

التابع inherited في الصنف Class في روبي

يُستدعَى التابع inherited كرد نداء في كل مرة يُنشأ فيها صنف فرعي (subclass) من الصنف الحالي. البنية العامة inherited(subclass) أمثلة مثال على استخدام التابع inherited: class Foo def self.inherited(subclass) puts "New subclass: #{subclass}" end end class Bar < Foo end class Baz < Bar end انظر أيضًا التابع new: يُنشئ صنفًا جديدًا مجهولًا غير مسمى (unnamed) من الصنف الأب (superclass) الممرر إليه (أو من الصنف Object إن لم يمرر إليه أي شيء). التابع allocate: يحجز مساحةً من الذاكرة لكائن جديد من الصنف class ...

التابع new في الصنف Class في روبي

يُنشئ التابع new صنفًا جديدًا مجهولًا غير مسمى (unnamed) من الصنف الأب ( superclass) المُمرَّر إليه (أو من الصنف Object إن لم يمرر إليه أي شيء). يمكن إعطاء صنف ما اسمًا عن طريق تعيين كائن الصنف (class object) وإعطائه قيمة ثابتة. إن أعطيت كتلة برمجية، فسيُمرَّر إليها كائن الصنف (class object)، وستقدَّر الكتلة في سياق ذلك الصنف كما هو الحال مع class_eval. عيِّن الصنف وأعطه قيمة ثابتة (يبدأ الاسم بأحرف كبيرة) إذا كنت تريد معاملته كصنف اعتيادي. البنية العامة new(super_class=Object) ...

الصنف Data في روبي

الصنف Data هو صنف مهمل. كان يعدُّ الصنف الأساس لملحقات C التي تستعمل Data_Make_Struct أو Data_Wrap_Struct. مصادر صفحة الصنف Data في توثيق روبي الرسمي.

الصنف FrozenError في روبي

يرمى الاستثناء FrozenError عند محاولة تعديل كائن مجمد. [1, 2, 3].freeze << 4 عند تنفيذ هذه الشيفرة، يرمى الاستثناء: FrozenError: can't modify frozen Array انظر أيضًا التابع freeze: يجمد السلسلة النصية التي استُدعيت معه، أي يجعلها غير قابلة للتعديل. مصادر صفحة الصنف FrozenError في توثيق روبي الرسمي.

الصنف ConditionVariable في روبي

توسع كائنات الصنف ConditionVariable عمل الصنف Mutex. فمن الممكن باستخدام المتغيرات الشرطية إيقاف مهمة حرجة (critical section) في أثناء تنفيذها إلى حين إتاحة مورد ما. إليك المثال التالي: mutex = Mutex.new resource = ConditionVariable.new a = Thread.new { mutex.synchronize { # Thread 'a' now needs the resource resource.wait(mutex) # 'a' can now have the resource } } b = Thread.new { mutex.synchronize { ...

الصنف TracePoint في روبي

يوفر الصنف TracePoint وظائف Kernel.set_trace_func على شكل واجهة برمجية كائنية (Object-Oriented API). مثال يمكننا استخدام المتعقبات (كائنات الصنف TracePoint) لجمع المعلومات بخصوص الاستثناءات: trace = TracePoint.new(:raise) do |tp| p [tp.lineno, tp.event, tp.raised_exception] end #=> #<TracePoint:disabled> trace.enable #=> false 0 / 0 #=> [5, :raise, #<ZeroDivisionError: divided by 0>]‎ الأحداث إذا لم تحدِّد نوع الأحداث التي تريد الاستماع إليها، فسيشمل المتعقب TracePoint جميع الأحداث المتاحة. ملحوظة: لا تعتمد على مجموعة الأحداث الحالية، إذ أن هذه القائمة عرضةٌ للتغيير. بدلًا من ذلك، يُنصَح بتحديد نوع ...

الصنف NoMethodError في روبي

يُطلق الاستثناء NoMethodError عند استدعاء تابعٍ مع مستقبِل (receiver) غير مُعرَّف فيه مع فشل الاستجابة للتابع method_missing. "hello".to_ary سيُطلق الاستثناء NoMethodError عند تنيفذ الشيفرة السابقة بالشكل: NoMethodError: undefined method `to_ary' for "hello":String توابع الصنف العامة (Public Class Methods) new ينشئ استثناءً من النوع NoMethodError للتابع ذي الاسم المعطى مع الوسائط المُمرَّرة. توابع النسخة العامة (Public Instance Methods) args يعيد الوسائط التي تم تمريرها كمعامل ثالث إلى الباني new. ?private_call مصادر قسم الصنف NoMethodErrorفي توثيق روبي الرسمي.

الصنف Regexp في روبي

تمثل كائنات الصنف Regexp التعابير النمطية التي تُستخدم لمطابقة نمط (pattern) معيّن في سلسلة نصية. تُنشَأ التعابير النمطية باستخدام الصياغتين /.../ و ‎%r{...}‎، أو باستعمال الباني new. التعابير النمطية هي أنماط تصف محتويات السلسلة النصية. يمكن استخدامها للتحقق من أنّ سلسلة نصية تحتوي على نمط معين، أو لاستخراج الأجزاء المُطابقة منها. عادةً ما يتم تحديد التعبير النمطي بخط مائل (/) كما يوضح المثال التالي: /hay/ =~ 'haystack' #=> 0 /y/.match('haystack') #=> #<MatchData "y"> ‎ إذا احتوت سلسلة نصية على النمط، فسيقال ...

الصنف NilClass في روبي

الصنف NilClass هو صنفٌ للكائن nil المُفرد. توابع النسخ العامة (Public Instance Methods) & يجري المعامل & العملية And المنطقية على الكائن المعطى والقيمة nil أو false. === يتحقق المعامل === من تساوي كائنين مع بعضهما بعضًا. ^ يجري المعامل ^ العملية XOR المنطقية على الكائن المعطى والقيمة nil أو false. | يجري المعامل | العملية OR المنطقية على الكائن المعطى والقيمة nil أو false. inspect يعيد دائمًا السلسلة النصية "nil". nil?‎ يتحقق إن كان الكائن الذي استدعي معه هو الكائن nil. rationalize يعيد الصفر كعدد جذري (rational). to_a يعيد دائمًا مصفوفة فارغة. to_c يحول الصفر إلى عدد عقدي. to_f يعيد ...

الصنف SyntaxError في روبي

يطلق الاستثناء SyntaxError عند اكتشاف خطأ في صياغة الشيفرة البرمجية لروبي. eval("1+1=2") سيًطلق الاستثناء SyntaxError بالشكل التالي: SyntaxError: (eval):1: syntax error, unexpected '=', expecting $end توابع الصنف العامة new ينشئ استثناءً جديدًا من النوع SyntaxError. مصادر صفحة الصنف SyntaxError في توثيق روبي الرسمي.

الصنف RangeError في روبي

يُطلق الاستثناء RangeError عندما تكون قيمة عددية معطاة خارج النطاق. [1, 2, 3].drop(1 << 100) سيُطلق الاستثناء RangeError بعد تنفيذ هذه الشيفرة: RangeError: bignum too big to convert into `long' مصادر صفحة الصنف RangeError في توثيق روبي الرسمي.

الصنف File في روبي

الصنف File هو اختصار لأي كائن ملفٍ قابل للوصول عبر البرنامج ومرتبط عن كثب بالصنف IO. يتضمن الصنف File توابع الوحدة FileTest كتوابع صنفٍ مما يسمح لك باستعمال File.exist?("foo")‎ مثلًا. في شرح توابع الصنف File التالية، تكون بتات الأذونات (permission bits) مجموعة من البتات التي تعتمد على المنصة المستعملة والتي تشير إلى أذونات الملف. في الأنظمة الشبيهة بيونكس، تُعرض الأذونات على شكل مجموعة من ثلاثة ثمانيات (octets)؛ الأولى من أجل المالك، والثانية من أجل المجموعة المالكة، والثالثة تخص الأشخاص الآخرين. ...

الصنف Queue في روبي

يُنفِّذ الصنف Queue طوابير الانتظار متعدِّدة المنتجين (multi-producer)، ومتعدِّدة المستهلكين (multi-consumer). إنَّه مفيدٌ بشكلٍ خاصٍّ في البرمجة المعتمدة على الخيوط (threaded programming) عندما يتحتَّم على المعلومات أن تُتبادل بأمان بين خيوطٍ (threads) متعدَّدة. يُنفِّذ الصنف Queue كل دلالات القفل المطلوبة. يُنفِّذ الصنف طوابير الانتظار التي من النوع FIFO (من يدخل أولًا يخرج أولًا). في هذا النوع، المهام التي تضاف أولًا في الطابور هي المهام التي تعاد أولًا منه. queue = Queue.new producer = Thread.new do 5.times do |i| ...

الصنف Fiber في روبي

الألياف (Fibers) هي حقولٌ أساسيّةٌ (primitives) تُستخدم في تنفيذ تعدّد المهام التشاركي (cooperative concurrency) للمهام الخفيفة (light weight) أي التي تستهلك جزءًا صغيرًا من الذاكرة. تعني أساسيًّا إنشاء كتل شيفرات يمكن إيقافها مؤقتًا واستئنافها، كما هو الحال مع الخيوط (threads). الفرق الأساسي في الألياف أنه لا يمكن إيقافها مؤقّتًا من قبل مهام أخرى تنفذ من قبل النظام (Preemption) وأن الجدولة (scheduling) يجب أن تتمَّ من قبل المبرمج وليس من قبل الآلة الافتراضية (virtual machine). على عكس نماذج تعدد المهام التشاركية ...

الصنف EncodingError في روبي

يُمثِّل الصنف EncodingError الصِّنفَ القاعديَّ (base class) لجميعِ أخطاء التّرميز (الصنف Encoding). مصادر صفحة الصنف EncodingError في توثيق روبي الرسمي.

الصنف ARGF في روبي

الصنف ARGF هو مجرى (stream) صُمِّم ليُستخدَم في الملفات البرمجية (scritps) التي تُعالج الملفات المُمرَّرة إليها على شكل وسائط في سطر الأوامر (command-line arguments)، أو المُمرَّرة عبر مجرى الدخل القياسي (STDIN). تُخزَّن الوسائط المُمرَّرة للملف البرمجي في المصفوفة ARGV، إذ يخزَّن وسيط واحد في كل عنصر. تفترض ARGF أنّ الوسائط التي ليست أسماء ملفات (filenames) قد أزيلت من ARGV. انظر الشيفرة التالية مثلًا: $ ruby argf.rb --verbose file1 file2 ARGV #=> ["--verbose", "file1", "file2"] option = ARGV.shift #=> "--verbose" ARGV #=> ...

الصنف Binding في روبي

تُغلِّف كائنات الصنف Binding سياق التنفيذ (execution context) في مكان معين في الشيفرة البرمجية، وتحتفظ بذلك السياق لاستخدامه مستقبلًا. يُحتفَظ بالمتغيرات، والتوابع، وقيمة self، وربما كتلة المكرر (iterator block) وكل ما يمكن الوصول إليه في هذا السياق. يمكن إنشاء كائنات الصنف Binding باستخدام التابع Kernel.binding، واستدعاؤها بوساطة التابع Kernel.set_trace_func. يمكن تمرير كائنات الربط (binding objects) هذه كوسيط ثانٍ للتابع Kernel.eval لإنشاء بيئة للتقييم (evaluation). class Demo def initialize(n) @secret = n end def get_binding ...

الصنف Rational في روبي

يمكن تمثيل عدد جذري (rational) كزوج من الأعداد الصحيحة بالشكل a / b‎ حيث b > 0؛ العدد a يمثل البسط، والعدد b يمثل المقام. من الناحية الرياضية، العدد الصحيح a يساوي العدد الجذري a / 1. في روبي، ​​يمكنك إنشاء الكائنات (الأعداد) الجذرية باستخدام التوابع Kernel.Rational أو to_r أو rationalize، أو عن طريق إضافة المُبدِّل r إلى عددٍ. ستكون القيم المعادة كسورًا غير قابلة للاختزال (irreducible fractions). Rational(1) #=> (1/1) Rational(2, 3) #=> ...

الصنف Interrupt في روبي

يُطلق الاستثناء Interrupt عند استقبال إشارة المقاطعة (interrupt signal)، عادةً لأن المستخدم ضغط على Ctrl-C (على معظم منصات POSIX). وعلى هذا النحو، فهو صنف فرعي من SignalException. begin puts "Press ctrl-C when you get bored" loop {} rescue Interrupt => e puts "Note: You will typically use Signal.trap instead." end ستُنتج عند تنفيذها: Press ctrl-C when you get bored ثم انتظر إلى أن يُقاطع بالضغط على Ctrl-C، وحينها ستطبع المخرجات التالية: Note: You will typically use Signal.trap instead. مصادر قسم الصنف ...

الصنف NameError في روبي

يُطلق الاستثناء NameError عندما يكون الاسم المعطى غير صالح أو غير مُعرّف. انظر إلى السطر البرمجي التالي: puts foo سيُطلق عند تنفيذه الاستثناء التالي: NameError: undefined local variable or method `foo' for main:Object أسماء الثوابت يجب أن تبدأ بحرف كبير، لذلك فالشيفرة البرمجية التالي: Integer.const_set :answer, 42 ستطلق الاستثناء NameError: NameError: wrong constant name answer توابع الصنف العامة (Public Class Methods) new ينشئ استثناءً جديدًا من النوع NameError. توابع النسخة العامة (Public Instance Methods) local_variables يعيد قائمة بأسماء المتغيرات المحلية المُعرّفة حيث أُطلٍق ...

الصنف Thread في روبي

المهام الفرعية (Threads، وتدعى "الخيوط" أيضًا) هي الطريقة التي تنفذ بها روبي البرمجة المتزامنة (concurrent programming). البرامج التي تتطلب تنفيذ عدة مهام فرعية يمكنها استخدام الصنف Thread. على سبيل المثال، يمكننا إنشاء مهمة فرعية جديدة منفصلة عن المهمة الرئيسية باستخدام التابع new. thr = Thread.new { puts "Whats the big deal" }‎ ثم يمكننا إيقاف تنفيذ المهمة الفرعية الرئيسية مؤقتًا إلى حين إنتهاء المهمة الفرعية خاصتنا باستخدام التابع join: thr.join #=> "Whats the big deal"‎ في حال عدم استدعاء التابع join قبل ...

الصنف fatal في روبي

يُطلق الاستثناء fatal عندما تصادف روبي خطأ فادحًا (fatal error) بحيث يتوجب عليها إنهاء البرنامج فورًا، لأنه لا يمكن معالجة هذا الاستثناء. مصادر صفحة الصنف fatal في توثيق روبي الرسمي.

الصنف InstructionSequence في روبي

يمثل الصنف InstructionSequence تسلسلًا مصرّفًا (compiled sequence) للتعليمات الخاصة بالآلة الافتراضية (Virtual Machine) لروبي. يمكّنك هذا الصنف من الحصول على مؤشر (handle) للتعليمات التي تشكل التابع أو الكتلة البرمجية، وتصريف (compile) سلاسل روبي النصية إلى تعليمات الآلة الافتراضية (VM)، وتفكيك التعليمات إلى سلاسل نصية لتسهيل فحصها. هذا الصنف مفيد للغاية إن كنت ترغب في معرفة كيفية عمل آلة روبي الافتراضية، لكنه يتيح لك أيضًا التحكم في إعدادات المُصرِّف iseq لروبي. يمكنك العثور على مصدر إرشادات الآلة الافتراضية في الصفحة insns.defفي ...

الصنف Encoding في روبي

يمثل الصنف Encoding ترميز المحارف الذي يمكننا استخدامه في لغة روبي. تُعرَّف النّسخة المنشأة من الصنف Encoding بأنّها ثابتٌ (constant) يندرج ضمن مجال أسماء الصنف (encoding namespace)؛ يكون لها اسم، واسم بديل (Alias) اختياري. Encoding::ISO_8859_1.name #=> "ISO-8859-1" Encoding::ISO_8859_1.names #=> ["ISO-8859-1", "ISO8859-1"] التّوابع (methods) في لغة روبي التي تتعامل مع التّرميزات تعيد أو تقبل النسخ Encoding على شكل وسيط (عندما يقبل التّابع كائنًا على شكل وسيط، يمكن عندها أن نستخدم اسم أو لقب الترميز عوضًا عن الكائن). "some string".encoding #=> #<Encoding:UTF-8> string = "some string".encode(Encoding::ISO_8859_1) #=> "some string" string.encoding #=> ...

الصنف String في روبي

السلاسل النصية (string) هي سلسلة تحتوي على حرف واحد أو أكثر وقد تحتوي على حروف أبجدية، مثل أرقام ورموز، ويكون كل حرف (أو رمز أو رقم) ممثلاً ببايت. السلاسل النصية في لغة البرمجة روبي عبارة عن كائنات (Objects)، وعلى عكس لغات البرمجة الأخرى، فإن النصوص قابلة للتغيير (Mutable) والتي تعني أننا نستطيع تعديل النصوص بدلًا من إنشاء نصوص جديدة. علامتا الاقتباس المزدوجتين والمفردتين يتم إنشاء السلاسل النصية (string) في لغة روبي باستعمال علامات الاقتباس المزدوجة (مثل "string") أو المفردة (مثل ...

الصنف Symbol في روبي

تمثل كائنات الصنف Symbol أسماء وسلاسل نصية داخل مترجم (interpreter) روبي. يمكن إنشاؤها باستخدام الصياغتين الحرفيتين ‎:name و ‎:"string"‎، أو بواسطة التوابع to_sym. سيتم إنشاء نفس الرمز (نفس الكائن Symbol) لاسم أو سلسلة نصية معينة طوال مدة تنفيذ البرنامج، بغض النظر عن السياق أو معنى هذا الاسم. وبالتالي، إن كان Fred ثابتًا في سياق معيّن، وتابعًا في سياق آخر، وصنفًا في سياق ثالث، فسيكون الرمز Symbol :Fred نفس الكائن في جميع السياقات الثلاث. module One class Fred end ...

الصنف RegexpError في روبي

يُطلق الاستثناء RangeError عند إعطاء تعبير نمطي غير صالح. إذا نفَّذنا السطر البرمجي التالي: Regexp.new("?") فسيُطلَق الاستثناء RangeError بالشكل التالي: RegexpError: target of repeat operator is not specified: /?/ مصادر صفحة الصنف RegexpError في توثيق روبي الرسمي.

الصنف IO في روبي

الصنف IO هو أساس كل عمليات الإدخال والإخراج في روبي. مجرى الدخل/الخرج (I/O stream) قد يكون مزدوج الاتجاه (duplexed، أي في اتجاهين)، وبذلك قد يُستخدَم أكثر من مجرى واحد من مجاري نظام التشغيل. الكثير من الأمثلة الواردة في في هذا القسم تستخدم الصنف File، وهو االصنف الفرعي (subclass) القياسي الوحيد للصنف IO، إذ يرتبط الصنفان ارتباطًا وثيقًا. مثل الصنف File، فإنّ المكتبة Socket تشتق أصنافًا فرعيةً من الصنف IO (مثل TCPSocket أو UDPSocket). يمكن أن ينشئ التابع Kernel.open كائنات من ...

الصنف RubyVM في روبي

يمثل الصنف RubyVM الآلة الافتراضية (VM، اختصار إلى virtual machine). الثوابت DEFAULT_PARAMS يعرض هذا الثابت معاملات الآلة الافتراضية (VM) الأولية (default). لاحظ أنّ تغيير تلك القيم لا يؤثر على طريقة تشغيل الآلة الافتراضية. المواصفات ليست مستقرة، ويجب أن لا تعتمد على هذه القيمة. INSTRUCTION_NAMES يمثِّل هذا الثابت أسماء التعليمات. OPTS يحتوي هذا الثابت على خيارات الآلة الافتراضية (vm). توابع الصنف العامة stat يعيد كائنًا من النوع Hash يحوي عدادات مُخصصة (implementation-dependent counters) داخل الآلة الافتراضية (VM). مصادر صفحة الصنف RubyVM في توثيق روبي الرسمي. ...

الصنف SystemExit في روبي

يُطلق الاستثناء SystemExit من قبل التعليمة exit لبدء عملية إنهاء الشيفرة البرمجية. توابع الصنف العامة new يُنشئ استثناءً جديدًا من النوع SystemExit مع تحديد حالة ورسالة الاستثناء. توابع النسخة العامة status يعيد قيمة الحالة المرتبطة بالكائن SystemExit الذي استُدعي معه. success?‎ يتحقق من نجاح عملية الإنهاء. مصادر صفحة الصنف SystemExit في توثيق روبي الرسمي.

الصنف MatchData في روبي

الصنف MatchData هو نوع المتغير الخاص ‎$~‎ ، كما أنه نوع الكائنات المُعادة من Regexp.match و Regexp.last_match. فهو يغلف ويستوعب جميع نتائج التطابق مع تعبير نمطي. يمكن الوصول إلى النتائج من خلال المتغيرات الخاصة ‎$&‎ و ‎$'‎ و $ و ‎$`‎ و ‎$1 و ‎$2 وهكذا دواليك. توابع الصنف العامة (Public Class Methods) == يتحقق المعامل == من تطابق كائنان من النوع matchdata إذا كانت السلاسل النصية المستهدفة منهما، والأنماط ومواضع المُطابقة متماثلة. [] تتصرف الكائنات MatchData كمصفوفة، لذا يمكن الوصول إليها باستخدام تقنيات ...

الصنف IOError في روبي

يُطلق الاستثناء IOError عند فشل عملية إدخال/إخراج (IO operation) في روبي. File.open("/etc/hosts") {|f| f << "example"} #=> IOError: not opened for writing File.open("/etc/hosts") {|f| f.close; f.read } #=> IOError: closed stream تذكر أنَّ فشل بعض عمليات الإدخال/الإخراج قد يؤدي إلى إطلاق الاستثناء SystemCallError، وهذا الاستثناء ليس متفرع من الصنف IOError. File.open("does/not/exist") #=> Errno::ENOENT: No such file or directory - does/not/exist مصادر صفحة الصنف IOError في توثيق روبي الرسمي.

الصنف BasicObject في روبي

الصنف BasicObject هو الصنف الأب لجميع الأصناف في روبي، وهو صنف فارغ. يمكن استخدام الصنف BasicObject لإنشاء هرميات كائنية (object hierarchies) مستقلة عن الهرمية الكائنية للغة روبي، أو لإنشاء مغلفات الكائنات (proxy objects) مثل الصنف Delegator، أو حيث يجب تجنب إفساد مجال الأسماء (namespace pollution) من قبل توابع وأصناف روبي. لتجنب إفساد الصنف BasicObject للمستخدمين الآخرين، يجب إنشاء صنف فرعي من الصنف BasicObject تحت اسم مناسب بدلاً من تعديل BasicObject مباشرةً: class MyObjectSystem < BasicObject end لا يتضمَّن الصنف BasicObject الوحدة Kernel ...

الصنف SignalException في روبي

يًطللق الاستثناء SignalException عند تلقي إشارة ما. begin Process.kill('HUP',Process.pid) sleep # wait for receiver to handle signal sent by Process.kill rescue SignalException => e puts "received Exception #{e}" end ‎ سيُنتج عن تنفيذ هذه الشيفرة ما يلي: received Exception SIGHUP توابع الصنف العامة new ينشئ كائنًا جديدًا من النوع SignalException. توابع النسخة العامة signo يعيد رقم إشارة. مصادر صفحة الصنف SignalException في توثيق روبي الرسمي.

الصنف FloatDomainError في روبي

يرمى الاستثناء FloatDomainError عند محاولة تحويل قيم عشرية خاصة (مثل القيمة Infinity أو NaN على وجه الخصوص) إلى أصناف رقمية لا تدعمها. Float::INFINITY.to_r #=> FloatDomainError: Infinity مصادر صفحة الصنف FloatDomainError في توثيق روبي الرسمي.

الصنف StopIteration في روبي

يُطلق الاستثناء SecurityError لوقف عملية التكرار (iteration)، خصوصًا عبر التابع Enumerator.next. يُعالج هذا الاستثناء بالتابع Kernel.loop. loop do puts "Hello" raise StopIteration puts "World" end puts "Done!" سيُنتج: Hello Done! توابع النسخة العامة result يعيد القيمة المعادة من المُكرر (iterator). مصادر صفحة الصنف StopIteration في توثيق روبي الرسمي.

الصنف Location في روبي

تمثّل كائنات الصنف Location إطارات المكدس (stack frames)، وتُنشأ بواسطة التابع Kernel.caller_locations. إليك مثلًا الشيفرة التالية: # caller_locations.rb def a(skip) caller_locations(skip) end def b(skip) a(skip) end def c(skip) b(skip) end c(0..2).map do |call| puts call.to_s end‎ تشغيل الأمر ruby caller_locations.rb سوف ينتج: caller_locations.rb:2:in `a' caller_locations.rb:5:in `b' caller_locations.rb:8:in `c'‎ إليك مثالًا آخر بنتيجة مختلفة بعض الشيء: # foo.rb class Foo attr_accessor :locations def initialize(skip) @locations = caller_locations(skip) end end Foo.new(0..2).locations.map do |call| puts call.to_s end‎ الآن، إن قمت بتنفيذ ruby foo.rb، فيجب أن ترى ...

الصنف NotImplementedError في روبي

يُطلق الاستثناء NotImplementedError عند عدم توفّر ميزة (feature) على نظام التشغيل الحالي. على سبيل المثال، قد تُطلِق التوابع التي تعتمد على استدعاء دالتي النظام fsync أو fork هذا الاستثناء إن كانتا غير مدعومتين على نظام التشغيل أو بيئة تشغيل روبي آنذاك. لاحظ أنه إن أطلقت الدالة fork الاستثناء NotImplementedError، فسيعيد التابع respond_to?(:fork)‎  القيمة false. مصادر قسم الصنف NotImplementedError في توثيق روبي الرسمي.

الصنف Integer في روبي

يمثل الصنف Integer الأعداد الصحيحة. لا يمكن إضافة تابع أحادي (singleton method) إلى كائن من الصنف Integer، وأي محاولة لفعل ذلك ستؤدي إلى إطلاق الخطأ TypeError. الثوابت (Constants) GMP_VERSION يمثِّل النسخة GMP المُحمّلة. توابع الصنف العامة (Public Class Methods) sqrt يعيد التابع sqrt‎ الجذر التربيعي الصحيح للعدد الصحيح الموجب المُمرر إليه. توابع الكائن العامة (Public Instance Methods) % يعيد المعامل %‎ باقي عملية القسمة الصحيحة بين عددين. & ينفذ المعامل & العملية AND بين بتات العددين المعطيين. * يعيد المعامل *‎ ناتج عملية الضرب بين عددين. ** يعيد المعامل **‎ ناتج ...

الصنف Binding في روبي

تُغلِّف كائنات الصنف Binding سياق التنفيذ (execution context) في مكان معين في الشيفرة البرمجية، وتحتفظ بذلك السياق لاستخدامه مستقبلًا. يُحتفَظ بالمتغيرات، والتوابع، وقيمة self، وربما كتلة المكرر (iterator block) وكل ما يمكن الوصول إليه في هذا السياق. يمكن إنشاء كائنات الصنف Binding باستخدام التابع Kernel.binding، واستدعاؤها بوساطة التابع Kernel.set_trace_func. يمكن تمرير كائنات الربط (binding objects) هذه كوسيط ثانٍ للتابع Kernel.eval لإنشاء بيئة للتقييم (evaluation). class Demo def initialize(n) @secret = n end def get_binding ...

الصنف SystemStackError في روبي

يُطلق الاستثناء SystemExit في حال امتلاء المُكدس (stack overflow). def me_myself_and_i me_myself_and_i end me_myself_and_i عند تنفيذ هذه الشيفرة، سيُطلق استثناء بالشكل التالي: SystemStackError: stack level too deep مصادر صفحة الصنف SystemStackError في توثيق روبي الرسمي.

الصنف Struct في روبي

يُعدُّ استخدام الصنف Struct طريقةً ملائمةً لتجميع مجموعة من الخاصيات (attributes) معًا، باستخدام مداخل (accessor methods) دون الحاجة إلى كتابة صنف جديد. يُنشئ الصنف Struct أصنافًا فرعيةً (subclasses) جديدةً تحمل مجموعة من الأعضاء مقرونة بقيمها. لكل عضو يتم إنشاء قارئ (reader method) وكاتب (writer method) مشابهين للتابع Module.attr_accessor. Customer = Struct.new(:name, :address) do def greeting "Hello #{name}!" end end dave = Customer.new("Dave", "123 Main") dave.name #=> "Dave" dave.greeting #=> "Hello Dave!"‎ راجع صفحة التابع new ...

الصنف Kernel في روبي

تُضمَّن الوحدة Kernel من طرف الصنف Object، لذلك فتوابعها متاحة في كل كائنات روبي. توابع نسخ الصنف Kernel مُوثّقة في صفحة الصنف Object، أما توابع الوحدة Kernel فهي مُوثقة هنا. تستدعى هذه التوابع بدون مستقبل (receiver)، وبالتالي يمكن استدعاؤها وفق الشكل الدالي: sprintf "%.1f", 1.234 #=> "1.2" توابع الصنف العامة (Public Class Methods) Array يعيد المعامل الممرَّر إليه على شكل مصفوفة (Array). Complex يعيد ناتج التعبير x + i * y؛ حيث i هو الوحدة التخيلية للعدد العقدي. Float Hash يعيد ناتج التعبير x + ...

الصنف Float في روبي

تمثِّل كائنات الصنف Float أعدادًا حقيقيةً غير دقيقة (inexact real numbers) باستخدام التمثيل العشري ذي الدقة المضاعفة للبنية الأصلية. للمنازل العشرية حساب مختلف وهو عدد غير دقيق، لذا يجب معرفة نظامها الخاص. نقترخ عليك الاطلاع على الصفحات التالية: ما هي الأشياء التي يجب أن يعرفها كل عالم حاسوب عن الأعداد العشرية. لماذا الأعداد العشرية في روبي غير دقيقة؟ مشاكل في الدقة. الثوابت DIG الحد الأدنى لعدد الأرقام العشرية ذات الدلالة في المنازل العشرية المزدوجة الدقة. وعادةً ما تكون قيمته الافتراضية ...

الصنف NoMemoryError في روبي

يُطلق الاستثناء NoMemoryError عند الفشل في حجز جزءٍ من الذاكرة. مصادر قسم الصنف NoMemoryError في توثيق روبي الرسمي.

الصنف Numeric في روبي

الصنف Numeric هو الصنف الذي يجب أن ترثه كل الأصناف العددية عالية المستوى. يسمح الصنف Numeric بتمثيل (instantiation) الكائنات المحجوزة في الكومة (heap-allocated objects). تُنفَّذ الأصناف العددية الأساسية الأخرى، مثل Integer، كأصناف آنيَّة، أي أنّ كل عدد صحيح هو كائن غير قابل للتغيير (immutable)، والذي يُمرَّر دائمًا بقيمته. اطلع على المثال التالي: a = 1 1.object_id == a.object_id #=> true لا يمكن أن يكون هناك إلا نسخة (instance) واحدة فقط من العدد الصحيح 1. تضمن روبي بهذا منع إنشاء نسخ ...

الصنف LoadError في روبي

يُطلق الاستثناء LoadError عند فشل تحميل الملف المطلوب (شيفرة روبي، مكتبة ملحقة، ...إلخ.). require 'this/file/does/not/exist' الشيفرة أعلاه ستطلق الاستثناء التالي: LoadError: no such file to load -- this/file/does/not/exist تمثل الخاصية path مسار الملف الذي فشلت روبي في تحميله. مصادر قسم الصنف LoadError في توثيق روبي الرسمي.

الصنف FiberError في روبي

يُرمى الاستثناء FiberError عند محاولة إجراء عمليّةٌ غير صحيحةٍ في الصنف Fiber، تحديدًا عند محاولة استدعاء/استئناف ليف ميِّت، أو محاولة التّوليد من الليف الجذر (root fiber)، أو استدعاء ليفٍ عبر خيوطٍ (threads). fiber = Fiber.new{} fiber.resume #=> nil fiber.resume #=> FiberError: dead fiber called مصادر صفحة الصنف FiberError في توثيق روبي الرسمي.

الصنف LocalJumpError في روبي

يُطلق الخطأ LocalJumpError عندما لا تتمكن روبي من الإعادة (yield) كما هو مطلوب. يحدث هذا مثلًا، عند محاولة الإعادة (yield) في غياب أية كتلة برمجية. def call_block yield 42 end call_block تطلق الشيفرة أعلاه الاستثناء التالي: LocalJumpError: no block given (yield) توابع الكائن العامة (Public Instance Methods) exit_value يعيد قيمة الخروج المرتبطة بالاستثناء LocalJumpError. reason يعيد سبب إنهاء الكتلة البرمجية: ‎ :breakأو ‎:redo أو ‎:retry أو ‎:next أو ‎ :returnأو ‎:noreason. مصادر قسم الصنف LocalJumpError في توثيق روبي الرسمي.

الصنف Proc في روبي

كائنات الصنف Proc هي كتلٌ من الشيفرات البرمجية رُبطت إلى مجموعة من المتغيرات المحليَّة. حالما تُربط، يمكن استدعاء الشيفرة في سياقات مختلفة ويبقى الوصول متاحًا لتلك المتغيرات. def gen_times(factor) return Proc.new {|n| n*factor } end times3 = gen_times(3) times5 = gen_times(5) times3.call(12) #=> 36 times5.call(5) #=> 25 times3.call(times5.call(4)) #=> 60 توابع الصنف العامة (Public ...

الصنف SystemCallError في روبي

يعتبر الصنف SystemCallError الصنف الأب لكل أصناف الأخطاء منخفضة المستوى المرتبطة بنظام التشغيل. الأخطاء المتوفرة على نظام التشغيل الحالي هي أصناف فرعية من الصنف SystemCallErrorـ وهي مُعرّفة في الوحدة Errno. File.open("does/not/exist")‎ عند تنفيذ هذا السطر البرمجي، سيطلق استثناء بالشكل التالي: Errno::ENOENT: No such file or directory - does/not/exist‎ توابع الصنف العامة (Public Class Methods) === يتحقق إن كان الاستثناء الذي استُدعي معه كائنًا عامًا من الصنف SystemCallError، أو إن كان رقما الخطأ الخاصين بهذا الاستثناء والاستثناء الآخر المعطى متساويين. new ...

الصنف Continuation في روبي

تُولّد الكائنات Continuation بواسطة التابع Kernel.callcc بعد استيراد continuation عبر require. تحمل هذه الكائنات عنوان العودة (return address) وسياق التنفيذ (execution context)، مما يتيح العودة إلى نهاية الكتلة callcc من أي مكان في البرنامج. كائنات الصنف Continuation مشابهة لحد ما البنية setjmp/longjmp في لغة C (على الرغم من أنَّها تحتوي على حالات أكثر، لذلك يمكن اعتبارها أقرب إلى المهام الفرعية [threads]). على سبيل المثال: require "continuation" arr = [ "Freddie", "Herbie", "Ron", "Max", "Ringo" ] callcc{|cc| $cc = cc} puts(message = arr.shift) $cc.call unless message ...

الصنف ZeroDivisionErro في روبي

يُطلق الاستثناء ZeroDivisionErro عند محاولة تقسيم عدد على 0. 42 / 0 #=> ZeroDivisionError: divided by 0 لاحظ أنه لن يُطلق هذا الاستثناء إلا عند محاولة القسمة على العدد صفر بالضبط (أي القيمة 0 وليس 0.0 مثلًا). اطلع على المثال التالي الذي يشرح ذلك: 42 / 0.0 #=> Float::INFINITY 42 / -0.0 #=> -Float::INFINITY 0 / 0.0 #=> NaN مصادر صفحة الصنف ZeroDivisionErro في توثيق روبي الرسمي.

الصنف SecurityError في روبي

يُطلق الاستثناء SecurityError عند محاولة تنفيذ عملية قد تكون غير آمنة؛ عادةً، يطلق عندما يُرفع مستوى ‎$SAFE  فوق 0: foo = "bar" proc = Proc.new do $SAFE = 3 foo.untaint end proc.call سيطلق الاستثناء SecurityError بالشكل التالي عند تنفيذ هذه الشيفرة: SecurityError: Insecure: Insecure operation `untaint' at level 3 مصادر صفحة الصنف SecurityError في توثيق روبي الرسمي.

الصنف ZeroDivisionError في روبي

يرمى الاستثناء ZeroDivisionError عند محاولة تقسيم عدد صحيح على الصفر. 42 / 0 #=> ZeroDivisionError: divided by 0 لاحظ أنَّ القسمة على القيمة 0 بالضبط (وليس القيمة 0.0 أو 0.0- مثلًا) سيؤدي إلى رمي الاستثناء ZeroDivisionError فقط. إليك المثال التالي: 42 / 0.0 #=> Float::INFINITY 42 / -0.0 #=> -Float::INFINITY 0 / 0.0 #=> NaN مصادر صفحة الصنف ZeroDivisionError في توثيق روبي الرسمي.

الصنف ScriptError في روبي

الصنف ScriptError هو الصنف الأب (superclass) لأصناف الأخطاء التي تُطلق عندما لا يمكن تنفيذ الشيفرة بسبب إحدى الأخطاء التالية: LoadError أو NotImplementedError أو SyntaxError. لاحظ أنَّ النوع ScriptError من أخطاء ليست قياسية (أي ليست من الأخطاء StandardError)، ولن تتم معالجتها ما لم يتم تحديدها بشكل صريح (أو تحديد صنفها الأب Exception). مصادر صفحة الصنف ScriptError في توثيق روبي الرسمي.

الصنف UncaughtThrowError في روبي

يُطلق الاستثناء UncaughtThrowError عندما يتم استدعاء throw مع وسم (tag) لا يحتوي على الكتلة catch المقابلة. throw "foo", "bar"‎ عند تنفيذ هذا السطر من الشيفرة، يطلق استثناء بالشكل: UncaughtThrowError: uncaught throw "foo"‎ توابع الصنف العامة new ينشئ كائنًا جديدًا من النوع UncaughtThrowError. توابع النسخة العامة tag يعيد كائن الوسم (tag object) الذي استُدعي معه. to_s يعيد رسالة منسقة تحتوي الوسم (tag). value يعيد القيمة المعادة من الوسم الذي استدعي معه. مصادر صفحة الصنف UncaughtThrowError في توثيق روبي الرسمي.

الصنف Exception في روبي

تُستخدَم الكائنات السليلة من الصنف Exception للتواصل بين التّابع Kernel.raise وتصريحات rescue في الكتل (blocks) من الشكل begin...end. تَحمل كائنات الصنف Exception معلوماتٍ عن الاستثناء المَرمي مثل نوعه (اسم صنف الاستثناء)، وسلسلةً نصيّةً وصفيّةً اختياريّة، ومعلوماتِ تتبّعٍ اختيارية. قد تضيف الأصناف الفرعية من الصنف Exception معلوماتٍ إضافيّةٍ مثل NameError.name. قد تُنشِئ البرامج أصنافًا فرعيّةً (subclasses) من الصنف Exception، تكون عادةً StandardError أو RuntimeError، لتوفير أصنافٍ مخصصّةٍ وإضافة معلوماتٍ إضافية. ألقِ نظرةً على قائمة الأصناف الفرعية في الأسفل من أجل قيم ...

الصنف Signal في روبي

تسمح العديد من أنظمة التشغيل بإرسال إشارات إلى العمليات (processes) قيد التشغيل للتحكم بها. بعض الإشارات لها تأثير محدد على العملية، بينما تكون أخرى مرتبطة بالشيفرة البرمجية، وتتصرف بناء عليها. على سبيل المثال، قد تقوم العملية بإمساك (trap) الإشارة USR1 واستخدامها في عملية التنقيح (debugging)، أو قد تُستخدَم الإشارة TERM لبدء إيقاف تشغيل العملية بشكل مُراقَب. pid = fork do Signal.trap("USR1") do $debug = !$debug puts "Debug now: #$debug" end Signal.trap("TERM") ...

الصنف SizedQueue في روبي

يمثل هذا الصنف طوابيرًا (queues) ذات أحجام سعة محددة. قد تُعطّل العملية push إن كانت السعة لطابور ما ممتلئة. راجع صفحة Queue للحصول على أمثلة حول كيفية عمل الصنف SizedQueue. توابع الصنف العامة new ينشئ طابورًا ذا طول ثابت. توابع النسخة العامة ‎<<‎ يضيف كائنات إلى الطابور المعطى.  clear يزيل كل الكائنات من الطابور. close يغلق الطابور الذي استدعي معه. deq هو اسم بديل للتابع pop. empty?‎ يتحقق إن كان الطابور فارغًا. enq هو اسم بديل للتابع push. length يعيد حجم الطابور ...

الصنف Enumerator في روبي

الصنف Enumerator هو صنفٌ يسمح بتنفيذ عملية التكرار الداخلي والخارجي على الكائنات. يمكن إنشاء كائنات من هذا الصنف باستعمال إحدى التوابع التالية: Kernel.to_enum، أو Kernel.enum_for، أو new. أغلب التوابع في هذا الصنف تملك شكلين هما: الشكل الكتلي (block form) الذي تقيَّم فيه المحتويات لكل عنصر في المجموعة التعدادية، والشكل الغير كتلي (non-block form) الذي يعيد كائنًا جديدًا من النوع Enumerator يغلِّف التكرار. enumerator = %w(one two three).each puts enumerator.class # => Enumerator enumerator.each_with_object("foo") do |item, obj| puts "#{obj}: #{item}" end # foo: one # ...

الصنف Time في روبي

الصنف Time هو تجريد لمفهومي التاريخ والوقت. يتم تخزين Time داخليا كعدد الثواني (مع كسورها) منذ توقيت يونيكس (1 يناير 1970 00:00 بالتوقيت العالمي). انظر أيضًا الوحدة Date لمزيد من المعلومات. يعامِل الصنف Time توقيت جرينتش (GMT، اختصار للعبارة Greenwich Mean Time) والتوقيت العالمي الموحد (UTC، اختصار للعبارة Universal Time Coordinated) على أنهما متكافئان. توقيت جرينتش هو الطريقة الأقدم للإشارة إلى هذه الأوقات المرجعية، ولا تزال موجودة في أسماء الاستدعاءات على أنظمة POSIX. يمكن أن يكون لجميع الأوقات كسور. انتبه لهذا ...

الصنف Mutex في روبي

يمكن استخدام الصنف Mutex وكائناته كواجهة لتنسيق الوصول إلى البيانات المشتركة من عدة خيوط (threads) موجودة وتعمل في نفس الوقت. إليك هذا المثال: semaphore = Mutex.new a = Thread.new { semaphore.synchronize { # access shared resource } } b = Thread.new { semaphore.synchronize { # access shared resource } } توابع الصنف العامة (Public Class Methods) new ينشئ كائنًا جديدًا من النوع Mutex. توابع النسخة العامة (Public Instance Methods) lock يحاول مسك القفل (grab ...

الصنف Hash في روبي

النوع Hash (أو الجدول Hash كما يطلق عليه أحيانًا) هو مجموعة تشبه القاموس ويتكون من مفاتيح فريدة وقيم مرتبطة بها. كما يسمى أيضًا المصفوفات الترابطية، فهو يشبه المصفوفات، ولكن بينما تستخدم المصفوفة فقط الأعداد الصحيحة كفهرس، يسمح النوع Hash باستخدام أيٍّ من أنواع الكائنات لاستعمالها كفهرس وربطها بقيمٍ. ترتَّب وتحصى القيم في النوع Hash بنفس الترتيب الذي أُدرِجت فيه مفاتيحها المقابلة. يمكن إنشاء جدول Hash بسهولة باستخدام شكله الصريح: grades = { "Jane Doe" => 10, "Jim Doe" => 6 ...

الصنف FalseClass في روبي

القيمة false العامة (global) هي النسخة الوحيدة من الصنف FalseClass وتمثِّل قيمة الخطأ (false) في التعابير المنطقية (boolean expressions). يوفر هذا الصنف معاملات تسمح للقيمة false بالمساهمة بشكل صحيح في التعابير المنطقية. توابع الكائن العامة (Public Instance Methods) المعامل & يجري المعامل & العملية AND المنطقية بين القيمة false والكائن المعطى ثم يُعيد القيمة false. المعامل === يتحقق المعامل === من تساوي كائنين بشكل صارم. المعامل ^ يجري المعامل ^ العملية XOR المنطقية بين القيمة false وقيمة الكائن المعطى. inspect ...

الصنف ArgumentError في روبي

يُطلق الاستثناء ArgumentError عندما تكون الوسائط (arguments) غير صالحة، ولا يكون هناك صنف Exception أكثر تحديدًا. تفحَّص المثال التالي الذي يشرح حالة تمرير عدد غير مناسب من الوسائط: [1, 2, 3].first(4, 5) سيُطلق عند تنفيذ هذه الشيفرة الاستثناء ArgumentError: ArgumentError: wrong number of arguments (given 2, expected 1) أما المثال التالي، فيشرح حالة تمرير وسيط غير مقبول: [1, 2, 3].first(-4) سيُطلق عند تنفيذ هذه الشيفرة الاستثناء ArgumentError: ArgumentError: negative array size مصادر صفحة ArgumentError في التوثيق الرسمي للغة ruby

الصنف IndexError في روبي

يُطلق الخطأ IndexError عندما يكون الفهرس (index) المُعطى غير صالح. a = [:foo, :bar] a.fetch(0) #=> :foo a[4] #=> nil a.fetch(4) #=> IndexError: index 4 outside of array bounds: -2...2 مصادر صفحة الصنف IndexError في توثيق روبي الرسمي.

الصنف KeyError في روبي

يُطلق الاستثناء KeyError عندما لا يكون المفتاح (key) المُحدد موجودًا، وهو صنف فرعي من IndexError. h = {"foo" => :bar} h.fetch("foo") #=> :bar h.fetch("baz") #=> KeyError: key not found: "baz" توابع الكائن العامة (Public Instance Methods) key يعيد المفتاح الذي تسبب في رمي الخطأ KeyError. receiver يعيد المتلقي (receiver) المقترن بالاستثناء KeyError. مصادر قسم الصنف KeyError في توثيق روبي الرسمي.

الصنف TrueClass في روبي

القيمة العامة true هي النسخة (instance) الوحيدة من الصنف TrueClass، وتمثل القيمة المنطقية true في التعابير المنطقية. يوفر هذا الصنف عدة معاملات تسمح باستخدام القيمة true في التعبيرات المنطقية. توابع النسخة العامة & يجري العملية AND المنطقية على القيمة true وقيمة الكائن المعطى، ويُعيد القيمة false إن كان الكائن يساوي nil أو false. === يتحقق من تساوي كائن مع كائن آخر. ^ يجري العملية XOR المنطقية على القيمة true وقيمة الكائن المعطى ويعيد القيمة true إن كان الكائن يساوي nil ...

الصنف Module في روبي

الصنف Module هو مجموعة من التوابع والثوابت. التوابع الموجودة في الوحدات Module قد تكون إما توابع نسخة (instance methods)، أو توابع وحدة (module methods). توابع النسخة تظهر كتوابع في صنفٍ عند تضمين الوحدة، وذلك على خلاف توابع الوحدة. وعلى النقيض، يمكن استدعاء توابع الوحدة دون إنشاء كائن يُغلفها، بينما قد لا يمكن فعل ذلك مع توابع النسخة. انظر صفحة module_function. في الأمثلة الموجودة في صفحات التوابع، يشير المعامل sym إلى رمز، والذي قد يكون إما سلسلة نصية، أو كائنًا من النوع ...

الصنف Method في روبي

يتم إنشاء كائنات الصنف Method بواسطة التابع Object.method، وترتبط بكائن معين (وليس بالصنف وحسب). ويمكن استخدامها لاستدعاء التابع داخل الكائن، أو ككتلة (block) مرتبطة بمكرر (iterator). كما يمكن فك ارتباطها (unbound) من كائن محدد (سيؤدي ذلك إلى إنشاء الكائن UnboundMethod) ثم ربطها بآخر. class Thing def square(n) n*n end end thing = Thing.new meth = thing.method(:square) meth.call(9) #=> 81 [ 1, 2, 3 ...

الصنف Object في روبي

يعدُّ الصنف Object الجذر الافتراضي لكل كائنات روبي. يَرِث الصنف Object من الصنف BasicObject ما يسمح بإنشاء تسلسلات هرمية بديلة للكائن. تُتاح توابع الكائن لكل الأصناف ما لم يتم تجاهلها (overridden) صراحةً. تندمج الوحدة Kernel ضمن الصنف Object ما يعطي الوصول العام (global) للدّوال المبنية ضمنيًّا في الوحدة. رغم أنَّ توابع النسخة المنشأة من الصنف Object معرَّفةٌ عن طريق الوحدة Kernel، رأينا أن نوثّقهم هنا لمزيد من الوضوح. عند الإشارة (referencing) إلى الثوابت في الأصناف الوارثة من الصنف Object، لا ...

الصنف RuntimeError في روبي

يُطلق الاستثناء RuntimeError عند محاولة تنفيذ عملية غير صالحة. في حال عدم تحديد صنف الاستثناء Exception، سيُطلق الاستثناء Kernel.raise. الشيفرة التالية: raise "ouch" ستطلق الاستثناء RuntimeError بالشكل التالي: RuntimeError: ouch مصادر صفحة الصنف RuntimeError في توثيق روبي الرسمي.

الصنف ENV في روبي

يشبه الصنف ENV الجداول Hash كثيرًا ويُستعمل للوصول إلى متغيرات البيئة. توابع الصنف العامة (Public Class Methods) [] يعيد هذا المعامل قيمة متغير بيئة محدَّد في سلسلة نصية، أو يعيد القيمة nil في حال لم يكن ذلك المتغير موجودًا. [] يضبط هذا المعامل عندما يُستعمَل بالشكل ENV[name] = value‎ قيمة متغير البيئة ذي الاسمname إلى القيمة value. إذا كانت القيمة value المعطاة تساوي nil، فسيُحذَف متغير البيئة ذاك. assoc يعيد مصفوفةً تحوي اسم وقيمة متغير بيئة ذي اسم محدَّد، أو يعيد القيمة nil في حال لم يكن ذلك المتغير موجودًا. clear يحذف ...

الصنف TypeError في روبي

يُطلق الاستثناء TypeError عند استقبال كائن من غير النوع المتوقع. [1, 2, 3].first("two") عند تنفيذ هذه الشيفرة، سيُطلق الاستثناء TypeError بالشكل التالي: TypeError: no implicit conversion of String into Integer مصادر صفحة الصنف TypeError في توثيق روبي الرسمي.

الصنف EOFError في روبي

يٌطلَق الخطأ EOFError من طرف بعض عمليات الصنف IO عندما تصل إلى نهاية الملف. تنقسم أغلب توابع الصنف IO -فيما يتعلق بالوصول إلى نهاية الملف- إلى قسمين: الأول يعيد القيمة nil عند الوصول إلى نهاية الملف، والآخر يطلق الخطأ EOFError عند الوصول إلى نهاية الملف. الصنف EOFError هو صنف فرعي من الصنف IOError. file = File.open("/etc/hosts") file.read file.gets #=> nil file.readline #=> EOFError: الوصول إلى نهاية الملف مصادر الصنف EOFError في توثيق روبي الرسمي.

الصنف Range في روبي

يمثل الصنف Range مجالًا (مجموعة) من القيم لها بداية ونهاية. يمكن إنشاء المجالات باستخدام الصياغة الحرفية بالشكل s..e و s...e ، أو باستخدام التابع الباني new. المجالات المُنشأة باستخدام الصياغة .. تشمل عنصري البداية والنهاية. أما تلك المُنشأة باستخدام الصياغة ... فلن تشمل قيمة النهاية. عند استخدامها كمكرر (iterator)، ستعيد المجالات كل قيمها بالتتابع. (-1..-5).to_a #=> [] (-5..-1).to_a #=> [-5, -4, -3, -2, -1] ('a'..'e').to_a #=> ["a", "b", "c", ...

الصنف ThreadGroup في روبي

يوفر الصنف ThreadGroup وسيلة لتتبع عددٍ من الخيوط (threads) باستمرار وكأنهم مجموعة واحدة. يمكن أن يكون الخيط Thread في مجموعة خيوط ThreadGroup واحدة على الأكثر فقط. وإضافة هذا الخيوط إلى مجموعة جديدة يؤدي إلى إزالته من أية مجموعة أضيف إليها سابقًا. الخيوط المنشأة حديثًا تنتمي إلى المجموعة نفسها التي أُنشِئَت هذه الخيوط منها. الثوابت Default المجموعة ThreadGroup الافتراضية التي تُنشَأ عند بدء روبي. تنتمي جميع الخيوط لهذه المجموعة بشكل افتراضي. توابع النسخة العامة add يضيف الخيط المُمرَّر إليه إلى مجموعة ...

الصنف UnboundMethod في روبي

تدعم روبي شكلين من التوابع الكائنية (objectified methods). يستخدم الصنف Method لتمثيل التوابع المرتبطة بكائن معين، ويمكن إنشاء كائنات التوابع من هذا النوع عبر التابع Object.method. تدعم روبي أيضًا التوابع الحرة (unbound methods)؛ وهي كائنات توابع غير مرتبطة بكائن معين. يمكن إنشاؤها إما عن طريق استدعاء Module.instance_method، أو عن طريق استدعاء unbind على تابع مرتبط (bound method object). نتيجة كليهما ستكون تابعًا حرًا (كائن من النوع UnboundMethod). لا يمكن استدعاء التوابع الحرة إلا بعد ربطها بكائن ما. ويجب أن يعيد ...

الصنف Dir في روبي

كائنات الصنف Dir هي مجاري مجلدات (directory streams) تمثِّل الجلدات في نظام الملفات الأساسي لنظام التشغيل. فهي توفر طرائق متعددة لعرض المجلدات ومحتوياتها. انظر أيضًا صفحة الصنف File لمزيد من المعلومات. يحوي المجلد المستخدم في الأمثلة الموجودة في صفحات التوابع ملفين عاديين هما: config.h و main.rb، بالإضافة إلى المجلد الأب (..) ، والمجلد نفسه (.). توابع الصنف العامة (Public Class Methods) المعامل [] يكافئ استدعاء Dir.glob([string,...], 0)‎.  chdir‎ يغيِّر مجلد العمل (working directory) الحالي للعملية الحالية إلى مجلَّدٍ محدَّدٍ. children ...

الصنف ThreadError في روبي

يُطلق الاستثناء ThreadError في حال محاولة تنفيذ عملية غير صالحة في مهمة فرعية. على سبيل المثال، في حال لم تبدأ مهمة فرعية أخرى مثل ما هو موضح في الشيفرة التالية: Thread.stop سيطلق استثناء بالشكل التالي: ThreadError: stopping only thread note: use sleep to stop forever مصادر صفحة الصنف ThreadError في توثيق روبي الرسمي.

الصنف Array في روبي

المصفوفات هي مجموعات مُرتَّبة ومُفهرسة بالأعداد الصحيحة (integer-indexed) ومُكونة من أي نوع من الكائنات. تبدأ فهارس المصفوفات بالعدد 0، كما هو الحال في لغتي C و Java. ويفترض أن يُحسب الفهرس السالب بدءًا من نهاية المصفوفة، أي أنَّ الفهرس ذا القيمة ‎-1 يشير إلى العنصر الأخير في المصفوفة، والفهرس ‎-2 يمثل موضع العنصر ما قبل الأخير، وهلم جرًا. إنشاء المصفوفات يمكن إنشاء مصفوفة جديدة باستخدام المعامل [] الباني. يمكن أن تحتوي المصفوفة نفسها على أنواع مختلفة من الكائنات. على سبيل ...

الصنف Complex في روبي

يمكن تمثيل الأعداد العقدية (تُسمّى أيضًا أعدادًا مركبةً [complex number]) كزوج مكون من عدد حقيقي ووحدة تخلية (العدد i) وفق الشكل a+bi، إذ a هو الجزء الحقيقي، و b هو الجزء التخيلي و i هو الوحدة الخيالية. العدد الحقيقي a يساوي العدد العقدي a+0i حسابيًا. يمكن إنشاء الأعداد العقدية بطريقة حرفية، وأيضا باستخدام التوابع Kernel.Complex أو  ‏‎::rect أو ‏‎::polar أو ‎.to_c. إليك الأمثلة التالية: 2+1i #=> (2+1i) Complex(1) ...

الصنف StandardError في روبي

معظم أخطاء الأنواع تنحدر من الصنف StandardError؛ ستُعالج الكتلة rescue التي لا تحدد الصنف Exception بشكل صريح كل الأخطاء StandardError (دون غيرها). def foo raise "Oups" end foo rescue "Hello" #=> "Hello" الشيفرة التالية: require 'does/not/exist' rescue "Hi" ستطلق استثناء بالشكل التالي: LoadError: no such file to load -- does/not/exist مصادر صفحة الصنف StandardError في توثيق روبي الرسمي.

الصنف Random في روبي

يزوِّد الصنف Random واجهةً لمولِّد أعدادٍ شبه عشوائيَّةٍ (pseudo-random number generator، أو يُدعى PRNG) في روبي. يُنتج مولِّد الأرقام شبه العشوائيَّة (PRNG) سلاسل محدَّدةً من البِتات تقارب العشوائيَّة الحقيقية. يمكن أن تمثِّل هذه السلاسل أعدادًا صحيحيةً (integers)، أو أعدادًا عشريةً (floats)، أو سلاسل نصيَّة ثنائيَّة (binary strings). يُهيَّأ هذا المولِّد ببذرة تعطى (seed) إمَّا من قبل النظام (system-generated) أو من قبل المستخدم (user-supplied) عبر استخدام التابع srand. يوفر تابع الصنف rand الوظيفة القاعديَّة للتابع Kernel.rand بالترافق مع معالجةٍ أفضل للقيم ...

الصنف ‎:not()‎

الصنف الزائف ‎:not()‎ في CSS (أي pseudo-class) يُمثِّل العناصر التي لا تُطابِق مُحدِّدًا أو أكثر، يسمى هذا الصنف أيضًا بصنف النفي الزائف (negation pseudo-class). هذا المُحدِّد يُحدِّد أيّة عناصر ليست <p>: :not(p) { color: blue; } ملاحظات: يمكن كتابة مُحدِّدات ليس لها فائدة، مثل ‎:not(*)‎ التي تُطابِق أيّ عنصر ليس عنصرًا، أي أنَّ هذا المُحدِّد لن يُطبَّق أبدًا. يمكن أن يزيد هذا الصنف من درجة التحديد للقاعدة، فمثلًا المُحدِّد ‎#foo:not(#bar)‎ يؤدي إلى مطابقة ما يطابقه ‎#foo لكن بدرجة تحديد أكبر. المُحدِّد ...

المعامل >> في الصنف Queue في روبي

يعدُّ المعامل >> اسمًا بديلًا للتابع push. البنية العامة <<(p1) المعاملات p1 الكائن المراد إضافته إلى الطابور المعطى. انظر أيضًا التابع push: يضيف الكائن المُمرَّر إليه إلى الطابور المعطى. التابع clear : يحذف كل الكائنات من الطابور الذي استُدعي معه. التابع length : يعيد طول الطابور الذي استُدعي معه. مصادر صفحة التابع >> في الصنف queue في توثيق روبي الرسمي.

المعامل >> في الصنف IO‎ في روبي

يكتب المعامل >> كائنًا في المجرى IO المعطى. يُحول ذلك الكائن إلى سلسلة نصية باستخدام التابع to_s. البنية العامة ios << obj → ios‎ القيمة المعادة يعاد المجرى ios بعد كتابة الكائن obj فيه. أمثلة مثال على استخدام التابع ‎<<‎: $stdout << "Hello " << "world!\n"‎ انظر أيضًا التابع write: يفتح ملفًا محدَّدًا ويكتب فيه السلسلة النصية المُمرَّرة إليه ثم يغلقه ويعيد عدد البايتات التي كتبها. مصادر قسم المعامل >> في الصنف IO‎ في توثيق روبي الرسمي.

المعامل ‎==‎ في الصنف BasicObject في روبي

يتحقق المعامل ==‎ من تساوي كائنين. عمومًا، يُعاد تعريف هذا التابع في الأصناف السليلة (descendant classes) بما يتناسب مع تلك الأصناف. خلافًا للمعامل ==، يجب ألا يُعاد تعريف التابع equal?‎ من قِبل الأصناف الفرعية، إذ يُستخدم آنذاك لتحديد هوية الكائن (أي يستعمل بالشكل a.equal?(b)‎ لتحديد إذا وفقط إذا كان الكائن a هو نفسه الكائن b [انظر المثال في الأسفل]). يعمل التابع eql?‎ على التحقق إذا كان الكائن الذي استُدعي معه والكائن الذي مُرّر إليه هما نفس الكائن أو يشيران إلى ...

الصنف ObjectSpace::WeakMap في روبي

يحتفظ كائن الصنف ObjectSpace::WeakMap بمراجع أيِّ كائن، لكن قد تخضع هذه الكائنات لعملية جمع المهملات (garbage collected). يُستخدَم هذا الصنف في أغلب الأحيان داخليًا من قبل الصنف WeakRef؛ استخدم lib/weakref.rb رجاءً من أجل الواجهة العامَّة. توابع الصنف العامة (Public Instance Methods) [] يعيد كائنًا ذو مرجع ضعيف (weakly referenced) مع المفتاح المُعطى. =[] يُنشئ مرجعًا ضعيفًا (weak reference) من المفتاح المُعطى إلى القيمة المعطية. each يتكرَّر على المفاتيح والكائنات في كائنٍ ذي مرجعٍ ضعيفٍ (weakly referenced object). each_key يتكرَّر على ...

الصنف Encoding::InvalidByteSequenceError في روبي

يُرمَى الاستنثناء InvalidByteSequenceError من قبل توابع الصّنفين String و Encoding عندما تحوي السّلسلة النّصية التي يجري تحويل ترميزها بايتًا غير صالح إما للتّرميز المصدر أو التّرميز الهدف المراد التحويل إليه. توابع الكائن العامة (Public Instance Methods) destination_encoding يُعيد التّرميز الهدف. destination_encoding_name يُعيد اسم الترميز الهدف. error_bytes يعيد البايتات التي أهملت عندما وقع الخطأ InvalidByteSequenceError. ?incomplete_input يتحقّق فيما إذا كان خطأ تسلسل البايت (byte sequence error) الحاصل ناتجًا عن إنهاءٍ مُبكِّرٍ للسّلسلة النّصية. readagain_bytes يعُيد البايتات المراد قراءتها مجدّدًا عندما يقع ...

الصنف Random::Formatter في روبي

توابع النسخة العامة rand random_number مصادر صفحة الوحدة Random::Formatter في توثيق روبي الرسمي.

المعامل === في الصنف FalseClass في روبي

يتحقق المعامل === من تساوي كائنين بشكل صارم. يشبه هذا المعامل فعليًا الاستدعاء ‎#==‎ الخاص بالصنف Object، ولكنه استُبدِل في الأصناف السليلة (descendants) -من ذلك الصنف- لتوفير دلالة واضحة وذات معنى خصوصًا في العبارات case. البنية العامة obj === other → true or false المعاملات obj الكائن المراد التحقق من تساويه مع الكائن other. other الكائن الآخر الذي سيُتحقَق من تساويه مع الكائن obj. القيم المعادة تُعاد القيمة true إذا كان الكائنان متساويين بشكل صارم (أي في القيمة والنوع). خلاف ...

المعامل ! في الصنف BasicObject في روبي

يعكس المعامل ‎! القيمة المنطقية التي تستعمل معه. البنية العامة !obj → true or false القيم المعادة تعاد قيمة منطقية معاكسة للقيمة المعطاة. أمثلة بعض الأمثلة على استخدام المعامل ‎!: temperature = 76 if !(temperature < 65 || temperature > 85) puts "Picnic time!" else puts "Sorry, no picnic today." end انظر أيضًا المعامل ==: يتحقق‎ من تساوي كائنين. المعامل ‎!=‎‎: يتحقق‎ من عدم تساوي كائنين. مصادر قسم المعامل ‎! في الصنف BasicObject في توثيق روبي الرسمي.

الصنف Encoding::ConverterNotFoundError في روبي

يُرمى الاستثناء ConverterNotFoundError من قبل توابع تبديل التّرميز (transcoding) عندما لا يتوافق ترميزٌ باسمٍ معيّنٍ مع محوّلٍ (converter) محدَّد. انظر أيضًا الاستثناء CompatibilityError: يُرمى عندما لا يتوافق التّرميز المصدر مع التّرميز الهدف. الاستثناء InvalidByteSequenceError: يُرمى عندما تحوي السّلسلة النّصية التي بُدِّل ترميزها على بايت غير صالح إما للتّرميز المصدر أو التّرميز الهدف. الاستثناء UndefinedConversionError: يُرمى عندما تفشل عملية تبديل التّرميز. مصادر صفحة الصنف Encoding::ConverterNotFoundError في توثيق روبي الرسمي.

الصنف ObjectSpace::WeakMap في روبي

يحتفظ كائن الصنف ObjectSpace::WeakMap بمراجع أيِّ كائن، لكن قد تخضع هذه الكائنات لعملية جمع المهملات (garbage collected). يُستخدَم هذا الصنف في أغلب الأحيان داخليًا من قبل الصنف WeakRef؛ استخدم lib/weakref.rb رجاءً من أجل الواجهة العامَّة. توابع الصنف العامة (Public Instance Methods) [] يعيد كائنًا ذو مرجع ضعيف (weakly referenced) مع المفتاح المُعطى. =[] يُنشئ مرجعًا ضعيفًا (weak reference) من المفتاح المُعطى إلى القيمة المعطية. each يتكرَّر على المفاتيح والكائنات في كائنٍ ذي مرجعٍ ضعيفٍ (weakly referenced object). each_key يتكرَّر على ...

عرض (100 السابقة | 100 التالية) (20 | 50 | 100 | 250 | 500).