نتائج البحث

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

do-while في PHP

(PHP 4, PHP 5, PHP 7) حلقات do-while مشابهة جدًّا لحلقات while، باستثناء أنّها عملية التحقق من الشرط تحدث في نهاية الدورة بدلًا من بدايتها. ما يميز هذه الحلقات عن حلقات while هو أنّ الدورة الأولى في حلقات do-while ستنفّذ في جميع الأحوال (تحدث عملية التحقق في نهاية الدورة فقط) في حين أن الدورة الأولى في حلقات while قد لا تنفّذ بالضرورة (تحدث عملية التحقق في بداية كل دورة، وإن كانت النتيجة FALSE منذ البداية تتوقف الحلقة عن العمل مباشرة). ...

do-while في PHP

(PHP 4, PHP 5, PHP 7) حلقات do-while مشابهة جدًّا لحلقات while، باستثناء أنّها عملية التحقق من الشرط تحدث في نهاية الدورة بدلًا من بدايتها. ما يميز هذه الحلقات عن حلقات while هو أنّ الدورة الأولى في حلقات do-while ستنفّذ في جميع الأحوال (تحدث عملية التحقق في نهاية الدورة فقط) في حين أن الدورة الأولى في حلقات while قد لا تنفّذ بالضرورة (تحدث عملية التحقق في بداية كل دورة، وإن كانت النتيجة FALSE منذ البداية تتوقف الحلقة عن العمل مباشرة). ...

do...while في JavaScript

التعبير البرمجي do...while يُنشِئ حلقة تكرار تُنفِّذ تعبيرًا برمجيًا معيّنًا إلى أن يصبح الشرط غير محقق (false)، وسيتم التحقق من الشرط بعد تنفيذ التعبير البرمجي، مما يؤدي إلى تنفيذ التعبير البرمجي المُعيّن مرةً واحدةً على الأقل. البنية العامة do statement while (condition); statement  التعبير البرمجي الذي سيُنفَّذ مرةً واحدةً على الأقل وسيُعاد تنفيذه في كل مرة يكون فيها الشرط محققًا (أي true)؛ ولتنفيذ أكثر من تعبير برمجي فاستخدام الأقسام الكتلية (block statement) { ... } لتجميع هذا التعابير. condition ...

الحلقة do...while التكرارية في أردوينو

تعمل الحلقة do...while التكرارية بنفس الطريقة التي تعمل بها الحلقة while باستثناء أنه يُتحقق من الشرط في نهاية الحلقة وليس في بدايتها. هذا يعني أنَّ الحلقة ستُنفَّذ مرة واحدة على الأقل. البنية العامة do { // الكتلة البرمجية المراد تكرار تنفيذها } while (condition); الشرط condition هو تعبير منطقي وسيُقيَّم على أنه إمَّا true أو false. أمثلة مثالٌ عن استعمال الحلقة do...while في قراءة قيمةٍ من حساس وانتظار بلوغها حدًّا معيَّنًا: do { delay(50); ...

التابع TracePoint.defined_class‎ في روبي

يُعيد التابع defined_class صنف أو وحدة التابع المُستدعى. class C; def foo; end; end trace = TracePoint.new(:call) do |tp| p tp.defined_class #=> C end.enable do C.new.foo end إذا تم تعريف التابع بواسطة وحدة، فستعاد تلك الوحدة. module M; def foo; end; end class C; include M; end; trace = TracePoint.new(:call) do |tp| p tp.defined_class #=> M end.enable do C.new.foo end ملحوظة: يُعيد التابع defined_class صنفًا مفردًا (singleton class). وسيط الكتلة السادس في التابع Kernel.set_trace_func يُمرَّر الصنف الأصليً (original class) للكائن عبر الصنف المفرد. هذا أحد الفوارق ...

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

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

حلقة until في Bash

كيفية عمل حلقة until تشبه هذه الحلقةُ التكرارية حلقةَ while باستثناء أن الحلقة هنا تُنفَّذ إلى أن يُنفَّذ أمر اختباري TEST-COMMAND بنجاح، فتظل الحلقة عاملة طالما كان تنفيذ الأمر الاختباري يفشل. والبنية اللغوية لها تشبه البنية اللغوية لحلقة while : until TEST-COMMAND; do CONSEQUENT-COMMANDS; done وحالة الإعادة لهذه الحلقة هي نفسها حالة الخروج لآخر أمر يُنفَّذ من الأوامر التابعة CONSEQUENT-COMMANDS أو تكون صفرًا إن لم يُنفَّذ أي أمر. وقد يكون الأمر الاختباري TEST-COMMAND أي أمر يمكن أن يخرج بحالة نجاح أو فشل، ...

حلقة while في Bash

كيفية عمل حلقة while تسمح حلقة while التكرارية بالتنفيذ المتكرر لقائمة أوامر طالما أن الأمر المتحكم في حلقة while يُنفَّذ بنجاح (حالة خروجه صفر). والبنية اللغوية لهذه الحلقة هي: while CONTROL-COMMAND; do CONSEQUENT-COMMANDS; done حيث يرمز CONTROL-COMMAND -وهو الأمر الذي سيتحكم في الحلقة- إلى أي أمر يخرج بحالة فشل أو نجاح، بينما قد تكون CONSEQUENT-COMMANDS -وهي الأوامر التي ستُكرَّر- أي برنامج أو برنامج للصدفة أو أحد بُنى الصدفة المختلفة. وتخرج الحلقة فور فشل الأمر المتحكِّم فيها، وإن كانت الحلقة في برنامج ...

الخيوط وتنفيذ الشيفرة في ريلز

بعد قراءة هذا الدليل، ستتلعم: ما هي شيفرة ريلز التي ستُنفَّذ تلقائيا في وقت واحد. كيفية دمج التزامن اليدوي مع أجزاء ريلز الداخلية. كيفية تغليف كل شيفرة التطبيق. كيف التأثير على عملية إعادة تحميل التطبيق. التزامن التلقائي تسمح ريلز تلقائيًا بإجراء عمليات مختلفة في نفس الوقت. عند استخدام خادم ويب ذي خيوط، مثل الخادم Puma الافتراضي، ستُخدَّم طلبات HTTP متعددة في وقت واحد؛ تقدم مع كل طلب نسخة لوحدة التحكم الخاص به. محولات Active Job التي تدعم تعدد الخيوط، تتضمن ...

سلاسل التوثيق النصية في بايثون

يمكن أن تكون العبارة الأولى في كتلة الدالة سلسلة نصّية، وتمثّل سلسلة التوثيق النصية الخاصة بتلك الدالة ويطلق عليها أيضًا تسمية docstring. هناك أدوات تستخدم سلاسل التوثيق النصية لإنتاج توثيق عبر شبكة الإنترنت، أو تسمح للمستخدم بتصفح الشيفرة بصورة تفاعلية؛ لذا ينصح باستخدام سلاسل التوثيق النصية في الشيفرة التي تكتبها. يجب أن يكون السطر الأول قصيرًا ومقتضبًا ويقدّم لمحة مختصرة عن الغرض من إنشاء الكائن، ولأجل الاختصار يجب أن لا يتضمن السطر الأول اسم الكائن أو نوعه؛ فهناك وسائل أخرى ...

سلاسل التوثيق النصية في بايثون

يمكن أن تكون العبارة الأولى في كتلة الدالة سلسلة نصّية، وتمثّل سلسلة التوثيق النصية الخاصة بتلك الدالة ويطلق عليها أيضًا تسمية docstring. هناك أدوات تستخدم سلاسل التوثيق النصية لإنتاج توثيق عبر شبكة الإنترنت، أو تسمح للمستخدم بتصفح الشيفرة بصورة تفاعلية؛ لذا ينصح باستخدام سلاسل التوثيق النصية في الشيفرة التي تكتبها. يجب أن يكون السطر الأول قصيرًا ومقتضبًا ويقدّم لمحة مختصرة عن الغرض من إنشاء الكائن، ولأجل الاختصار يجب أن لا يتضمن السطر الأول اسم الكائن أو نوعه؛ فهناك وسائل أخرى ...

التابع TracePoint.new‎ في روبي

يُعيد التابع new متعقبًا جديدًا غير مفعَّل افتراضيًّا. راجع صفحة الصنف TracePoint للتعرف على الأحداث الممكنة ولمزيد من المعلومات. يجب إعطاء كتلة للتابع، وإلا سيُطلق الاستثناء ArgumentError. البنية العامة new(*events) { |obj| block } → obj‎ المعاملات events‎ أحداث يراد إنشاء تعقب لها. القيمة المعادة يعاد متعقبٌ جديدٌ للأحداث events. أمثلة من أجل تفعيل التعقب بعد إنشائه باستعمال التابع new، يجب عليك استخدام التابع enable: trace = TracePoint.new(:call) do |tp| p [tp.lineno, tp.defined_class, tp.method_id, tp.event] end #=> #<TracePoint:disabled> trace.enable #=> false puts "Hello, ...

التابع Fiber.transfer في روبي

ينقل التّابع transfer التحكّم إلى ليف (fiber) آخر، أو يستأنف عمل الليف الحالي عند آخر نقطة أوقف فيها، أو يبدأه إذا لم يُستأنَف سابقًا. سيُعلَّق الليف المُستدعَى كما في استدعاء Fiber.yield. يجب عليك طلب 'fiber' قبل استخدام هذا التّابع. يعامل الليف طلب التحويل ( عبر transfer) الذي يستقبله على أنَّه نداء استئنافٍ. الوسائط المُمرَّرة من أجل التحويل تعامل كتلك المُمرَّرة من أجل الاستئناف. لا يمكنك استئناف ليفٍ حُوِّل تحكمه إلى ليفٍ آخر. سيسبّب هذا خطأ استئنافٍ مضاعفٍ. عليك إعادة تحويل ...

التابع Module.used_modules‎ في روبي

يعيد التابع used_modules مصفوفة تحتوي جميع الوحدات (modules) المستخدمة في النطاق الحالي. ترتيب الوحدات في المصفوفة الناتجة غير محدد. البنية العامة used_modules → array‎ القيمة المعادة تعاد مصفوفة تحتوي جميع الوحدات (modules) المستخدمة في النطاق الحالي. أمثلة مثال على استخدام التابع used_modules‎: module A refine Object do end end module B refine Object do end end using A using B p Module.used_modules‎ ناتج تنفيذ الشيفرة هو: [B, A] انظر أيضا التابع using: يستورد الأصناف المهذبة (class refinements) من الوحدة في التعريف الحالي للصنف أو الوحدة. ...

تعابير التحكم في روبي

لدى لغة روبي العديد من الطرق للتحكم في مسار تنفيذ البرنامج، وكل البنى المذكورة هنا تعيد قيمةً. في الاختبارات الشرطيّة في بنى التحكّم، تعدّ القيمة nil و false على أنّها قيم خطأ، بينما تُعدُّ القيمة true وأيّ كائن آخر على أنه قيم صحيحة. وفي هذا التوثيق، سنستخدم true للتعبير عن القيم الصحيحة و false للتعبير عن القيم الخطأ. بنية If الشرطية أبسط أشكال بنية if الشرطيّة يحتوي على جزأين، الاختبار الشّرطي، والجزء التّنفيذي then. هذه بنية if بسيطة: if true ...

التوجيه من الخارج إلى الداخل في ريلز

يغطي هذا الدليل الميزات التي يواجهها المستخدم في عمليات التوجيه في ريلز. بعد قراءة هذا الدليل، ستعرف: كيفية تفسير الشيفرة في config/routes.rb. كيفية بناء المسارات الخاصة بك باستخدام إما أسلوب الحيلة (resourceful style) المفضل أو طريقة المطابقة (match method). كيفية الإعلان عن معاملات المسار الموجه، والتي تمرر إلى إجراءات وحدة التحكم (controller actions). كيفية إنشاء المسارات وعناوين URL تلقائيًا باستخدام مساعدي المسار الموجه. التقنيات المتقدمة مثل إنشاء قيود وتثبيت نقاط نهاية Rack. الغرض من توجيه المسارات في ريلز يتعرف جهاز ...

حلقة for في Bash

كيفية عمل حلقة for التكرارية حلقة for هي أول وحدة تكرارية في الصدفة من بين ثلاث وحدات، وتسمح تلك الحلقة بتخصيص قائمة من القِيَم، وتُنفَّذ قائمة من الأوامر لكل قيمة من تلك القيم. والبنية اللغوية لهذه الحلقة التكرارية هي كالآتي: for NAME [in LIST ]; do COMMANDS; done إن لم تكن [ in LIST] موجودة فيتم استبدال @$ in بها، وتنفذ for الأوامر (COMMANDS) مرة واحدة لكل معامل موضعي مضبوط على قيمة، انظر المتغيرات في Bash وفحص وسائط سطر الأوامر. وتكون ...

التابع Location.label‎ في روبي

يعيد التابع label تسمية هذا الإطار. عادة ما تتألف النتيجة من اسم التابع والصنف والوحدة ...الخ. الأسماء ستكون مزخرفة. البنية العامة label() القيمة المعادة تعاد تسمية هذا الإطار. أمثلة مثال على استخدام التابع label‎: def foo puts caller_locations(0).first.label 1.times do puts caller_locations(0).first.label 1.times do puts caller_locations(0).first.label end end end‎ نتيجة استدعاء foo هي: label: foo label: block in foo label: block (2 levels) in foo‎ انظر أيضًا التابع base_label: ...

التابع Thread.priority=‎ في روبي

يعين التابع priority عند استدعائه بالشكل priority= integer أولوية المهمة الفرعية التي استدعيت معه إلى القيمة integer. سيتم تشغيل المهام الفرعية ذات الأولوية العالية بشكل أكثر تكرارًا من مثيلاتها ذات الأولوية المنخفضة (ولكنها ستشُغّل على أي حال). هذا مجرد تلميح يستعمله مُجدوِل المهام الفرعية (thread scheduler) في روبي. قد يتم تجاهله على بعض الأنظمة التشغيل. البنية العامة priority= integer→ thr‎ أمثلة مثال على استخدام التابع priority=‎: count1 = count2 = 0 a = Thread.new do loop ...

التابع Enumerator.each_with_object في روبي

يكرر التابع each_with_object الكتلة المعطاة على كل عنصر من عناصر الكائن الذي استدعي معه مع كائن آخر اعتباطي (الكائن المُمرَّر إليه). إن لم تُعطَ أية كتلة، فسيعيد التابع كائنًا جديدًا من النوع Enumerator. البنية العامة each_with_object(obj) {|(*args), obj| ... } each_with_object(obj) المعاملات obj الكائن الذي سيُكرَّر مع كل عنصر من عناصر الكائن المعطى. القيمة المعادة يعاد الكائن obj المعطى، أو يعاد كائن جديد من النوع Enumerator إن لم تُعطَ أية كتلة. أمثلة مثال على استعمال التابع each_with_object: to_three = Enumerator.new do |y| ...

التابع Enumerator.with_object في روبي

يكرِّر التابع with_object الكتلة المعطاة على كل عنصر من عناصر المُعدِّد الذي استدعي معه مع كائن اعتباطي (الكائن المُمرَّر إليه) ثم يعيد هذا الكائن. إن لم تُعطَ الكتلة، فسيعيد التابع كائنًا جديدًا من النوع Enumerator. البنية العامة with_object(obj) {|(*args), obj| ... } with_object(obj) المعاملات obj الكائن الذي سيُكرَّر مع كل عنصر من عناصر الكائن المعطى. القيمة المعادة يعاد الكائن obj المعطى، أو يعاد كائن جديد من النوع Enumerator إن لم تُعطَ أية كتلة. أمثلة مثال على استعمال التابع with_object: to_three = Enumerator.new do |y| 3.times ...

تهجيرات Active Record في ريلز

التهجيرات (Migrations) هي ميزة من Active Record التي تمكّنك من تحديث مخطط قاعدة البيانات على مر الوقت. بدلًا من كتابة تعديلات قاعدة البيانات باستخدام SQL، تمكّنك التهجيرات من كتابة تعليمات DSL باستخدام روبي لتحديث جداولك. بعد قراءة هذا الدليل، ستتعرَّف على: المولِّدات التي تستطيع استعمالها لإنشاء التهجيرات. التوابع التي يوفرها Active Record لتعديل قاعدة البيانات. المهام bin/rails التي تعدِّل وتتحكم بالتهجيرات والمخطط (schema) الخاص بك. العلاقة بين التهجيرات والملف schema.rb. نظرة عامة على التهجيرات إن التهجيرات هي طريقة مناسبة وسلسة ...

التابع Hash.default في روبي

يضبط التابع default عند استدعائه بالشكل default = obj القيمة الافتراضية obj وهي القيمة التي ستُعاد لمفتاح غير موجود في الكائن Hash. لا يستطيع هذا التابع ضبط القيمة الافتراضية للعملية Proc التي ستُنفَّذ عند كل بحث عن مفتاح غير موجود. البنية العامة default = obj → obj القيمة المعادة تعاد القيمة الافتراضية obj التي ستُعاد لمفتاح غير موجود في الكائن Hash المعطى بعد تعيينها. أمثلة مثال على استعمال التابع default: h = { "a" => 100, "b" => 200 } h.default = ...

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

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

الصنف 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، فيجب أن ترى ...

اختبار تطبيقات ريلز

يشمل هذا الدليل الآليّات المدمجة في ريلز لإجراء الاختبارت على التطبيقات. بعد قراءة هذا الدليل، ستتعلم: الاصطلاح المتعلّق باختبارات ريلز. كيفيّة كتابة كلٍّ من اختبارات الوحدة، الاختبارات الوظيفيّة، والاختبارات التكامليّة لتطبيقات ريلز. وغيرها من الطرق والإضافات الخاصّة بالاختبارات. ما الهدف من كتابة اختبارات لتطبيقات ريلز؟ يسهّل ريلز كتابة الاختبارات بشكل كبير، إذ أنّه يبدأ بهيكلة شيفرة الاختبار في الوقت الذي تُنشِئ فيه النّماذج ووحدات التحكّم. يمكّنك إجراء اختبارات ريلز من التأكّد من أداء الشيفرة وظيفتَها المطلوبة حتّى بعد إعادة تصميم ...

التحسينات في روبي

إن ميّزة الأصناف المفتوحة في لغة روبي تسمح لك بإعادة تعريف أو إضافة وظائف إلى أصناف معرّفة مسبقًا. وهذا ما يسمى بمصطلح "ترقيع القرد" (monkey patch). المشكلة هنا أنَّ تعديلات من هذا النوع تكون مرئيّة على المستوى العام (global)، وبالتالي جميع مستخدمي الصنف المرقّع قادرون على رؤية هذه التغييرات، ممّا قد يسبّب تأثيرات جانبيّة غير محسوبة أو حتى عطب في البرامج. تأتي التحسينات هنا لتقلّل أثر ترقيع القرد على مستخدمي الصنف الآخرين، إذ تقدّم طريقة لتوسيع الصنف محليًّا. وإليك مثال ...

بنى التحكم في PHP

تتكون جميع شيفرات PHP من سلسلة من العبارات (statements)، ويمكن للعبارة أن تكون إسنادًا (assignment) أو استدعاءً لدالّة، أو حلقة تكرارية، أو عبارة شرطية أو حتى عبارة لا تقوم بأي عمل على الإطلاق (عبارة فارغة). تنتهي العبارات عادة بالفاصلة المنقوطة (;)، ويمكن تجميع العبارات بإحاطتها بالأقواس المعقوفة ({}) لتصبح مجموعة عبارات (statement-group)، والتي تعدّ بدورها عبارات أيضًا. سنفصل الحديث في هذا الفصل عن أنواع متعددة من العبارات. if بنية if هي واحدة من أهم الميزات المتوفّرة في العديد من اللغات ...

array_map()‎

(PHP 4 >= 4.0.6, PHP 5, PHP 7) تنفذ الدالة array_map()‎ دالةً أخرى يحددها المستخدم على كل عنصر موجود في المصفوفات المُمرََرَة. الوصف array array_map ( callable $callback , array $array1 [, array $... ] ) تعيد الدالة كل عناصر المصفوفة array1 بعد تنفيذ الدالة callback على كل عنصر من عناصرها. يجب أن يساوي عدد المعاملات التي تقبلها الدالة callback عدد المصفوفات المُمَرََرَة إلى الدالة array_map()‎. المعاملات callback mixed callback (mixed $parameter1 [, mixed $...]) دالة يحددها المستخدم لتنفيذها على كل ...

array_map()‎

(PHP 4 >= 4.0.6, PHP 5, PHP 7) تنفذ الدالة array_map()‎ دالةً أخرى يحددها المستخدم على كل عنصر موجود في المصفوفات المُمرََرَة. الوصف array array_map ( callable $callback , array $array1 [, array $... ] ) تعيد الدالة كل عناصر المصفوفة array1 بعد تنفيذ الدالة callback على كل عنصر من عناصرها. يجب أن يساوي عدد المعاملات التي تقبلها الدالة callback عدد المصفوفات المُمَرََرَة إلى الدالة array_map()‎. المعاملات callback mixed callback (mixed $parameter1 [, mixed $...]) دالة يحددها المستخدم لتنفيذها على كل ...

 التابع Dir.chdir في روبي

يغيِّر التابع chdir‎ مجلد العمل (working directory) الحالي للعملية الحالية إلى مجلَّدٍ محدَّدٍ. عند استدعائه بدون تمرير وسيط، فسيغيِّر مجلد العمل إلى قيمة متغير البيئة HOME أو LOGDIR.SystemCallError (وربما Errno::ENOENT) إذا كان المجلد المُستهدَف غير موجود. في حال تمرير كتلة برمجية إلى التابع، فسيُمرّر إليها اسم المجلد الحالي الجديد، وستنفّذ الكتلة على اعتباره المجلد الحالي. بعد تنفيذ الكتلة والخروج منها، سيُستعَاد مجلد العمل الأصلي آنذاك. وتكون القيمة المعادة للتابع chdir مساويةً لقيمة الكتلة. يمكن أن تتشعّب الكتل chdir، ولكن سيُطلَق ...

إنشاء قوائم باستخدام الأمر المُضمَّن select في Bash

عام استخدام أمر select البُنية اللغوية لأمر select تشبه بُنية حلقة for: select WORD [in LIST]; do RESPECTIVE-COMMANDS; done ويُستخدم أمر select من أجل إنشاء قوائم بسهولة عبر اتباع ما يلي: تُوسّع القائمة LIST مولِّدة قائمة من العناصر ويطبع التوسع في خطأ قياسي (standard error)، كما يُسبق كل عنصر من القائمة برقم. وإن لم تكن in LIST موجودة فتُطبع المعامِلات الموضعية كما لو تم تحديد @$ in. أيضًا، تُطبع قائمة LIST مرة واحدة فقط. يُطبع محث PS3 عند طباعة كل العناصر، ...

إنشاء وتخصيص مولدات وقوالب ريلز

مولدات ريلز هي أداة أساسية إذا كنت تخطط لتحسين سير عملك. مع هذا الدليل سوف تتعلم كيفية إنشاء المولدات وتخصيص المولدات الموجودة. بعد قراءة هذا الدليل، ستتعلم: كيفية معرفة أي المولدات المتوفرة في التطبيق الخاص بك. كيفية إنشاء مولد باستخدام القوالب. كيفية بحث ريلز عن المولدات قبل استدعائها. كيفية إنشاء ريلز داخليًا شيفرة من القوالب. كيفية تخصيص المولد scaffold عن طريق إنشاء مولدات جديدة. كيفية تخصيص المولد scaffold عن طريق تغيير قوالب المولدات. كيفية استخدام التراجعات (fallbacks) لتجنب استبدال مجموعة ...

التابع Process.kill في روبي

يرسل التابع kill إشارة محدَّدة إلى عملية ذات مُعرِّف معطى أو إلى جميع العمليات التي معرِّف المجموعة التي تملكه مساويًا إلى معرِّف المجموعة للعملية المستدعية. البنية العامة kill(signal, pid, ...) → integer المعاملات signal عدد صحيح يمثِّل رقم الإشارة أو سلسلة نصية تمثِّل اسم الإشارة بحسب POSIX (مع أو بدون السابقة SIG). إن كان عددًا صحيحًا موجبًا، إن كان عددًا سالبًا (يبدأ بإشارة الناقص)، فستُقتَل مجموعات العملية (process groups) بدلًا من العمليات. ليست جميع الإشارات مدعومة على كل المنصات. مفاتيح وقيم ...

إعادة التوجيه والحلقات في Bash

إعادة توجيه المُدخلات يمكن تحديد ملف به تعليمات تُستخدم للتحكم في حلقة تكرارية بدلًا من التحكم فيها عن طريق تفقد نتيجة أمر ما أو عن طريق تدخل المستخدم يدويًا، وعادة ما يُستخدم أمر read في هذه الحالة كأمر متحكِّم، ويستمر تنفيذ الحلقة طالما تُغذَّى الحلقة التكرارية بأسطر مدخلات من ذلك الملف، وبمجرد قراءة جميع الأسطر فإن الحلقة تتوقف وتخرج. وبما أن بنية الحلقة التكرارية تُعد بنية لأمر واحد (مثل while TEST-COMMAND; do CONSEQUENT-COMMANDS; done) فإن إعادة التوجيه يجب أن تحدث ...

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

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

الصنف 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 في توثيق روبي الرسمي.

الكلمة break المفتاحية في أردوينو

تُستعمَل الكلمة break المفتاحية للخروج من الحلقات for، أو while، أو do...while التكرارية، إذ تتخطى الشيفرة التي بعدها وشروط الحلقة المحددِّة وتخرج منها. تُستعمَل أيضًا للخروج من التعبير switch...case البرمجي. البنية العامة break; أمثلة في الشيفرة التالية، يخرج المتحكم من الحلقة for عندما تتجاوز قيمة الحساس المقاسة عتبة معينة: for (x = 0; x < 255; x ++) { analogWrite(PWMpin, x); sens = analogRead(sensorPin); if (sens > threshold){ ...

التابع Enumerator.new في روبي

ينشئ التابع new كائنًا جديدًا من النوع Enumerator يمكن استعماله ككائن قابل للتعداد (Enumerable). البنية العامة new(size = nil) { |yielder| ... } new(obj, method = :each, *args) في الشكل الأول للتابع، يُعرَّف التكرار عبر الكتلة المعطاة التي يمكن استخدام الكائن yielder - المعطى كمعامل - فيها لإعادة القيمة الناتجة عبر استدعاء التابع yield (أو اسمه البديل +>>+). في الشكل الثاني - المهمل - للتابع، يتكرر مُعدِّدٌ مُولَّد عبر الكائن obj المعطى باستعمال التابع method المعطى مع تمرير الوسائط args إليه. لا يُشجَّع على ...

الكلمة continue المفتاحية في أردوينو

تتخطى الكلمة continue المفتاحية الشيفرة التي تليها في حلقة التكرار (مثل الحلقات for، أو while، أو do...while التكرارية) إلى عملية التحقق من التعبير الشرطي لتلك الحلقة ثم يُستأنَف عمل حلقة التكرار بشكل طبيعي. عمل هذه العبارة شبيه بإحداث قفزة في حلقة التكرار لتخطي تنفيذها عند تحقق شرط معين. البنية العامة continue; أمثلة في الشيفرة التالية، ستُكتب القيمة من 0 إلى 255 على الرجل PWMpin مع تخطي كتابة القيم التي تقع في المجال 41 إلى 119: for (x = 0; x ...

استدعاء التوابع في روبي

عندما تستدعي تابعًا، فإنّك تمرّر رسالة لكائن معيّن لأجل تنفيذ مهمّة معيّنة، ويتمّ ذلك في لغة روبي كالتّالي: my_method() لاحظ أنّ استخدام الأقواس المنحنية هنا اختياريّ: my_method المعتمد في هذا التّوثيق أن تُستخدّم الأقواس عند وجود المعامِلات لإزالة الالتباس، إلا في حالة وجود فرق بين وجود الأقواس وحذفها. هذا القسم يغطّي فقط كيفيّة استدعاء التوابع، وستُشرَح كيفيّة تعريف التّوابع في قسم آخر. المستقبِل المستقبِل (Receiver) الافتراضي في لغة روبي هو self وهو الذي يُستخدَم في حال عدم تحديد أيّ مستقبل آخر. ولأجل ...

التابع IO.read‎ في روبي

يقرأ التابع read عددًا محدَّدًا من البايتات من المجرى الذي استدعي معه عندما يُستدعى التابع read في نهاية الملف، فسيعيد إما nil أو ""، بناءً على الطول المُمرَّر إليه، مثلا، ستعيد التعبيرات read و read(nil)‎ و read(0)‎ القيمة ""، فيما سيعيد التعبير read( positive_integer )‎ القيمة nil. لاحظ أنَّ هذا التابع يتصرف بطريقة مشابهة للدالة fread()‎ في لغة C. وهذا يعني أنَّه سيحاول إجراء استدعاءات النظام read(2)‎ لقراءة البيانات بالطول المحدَّد (أو حتى يصادف محرف نهاية الملف EOF). يستمر هذا السلوك ...

التابع Object.to_enum في روبي

يُنشئ التابع enum_for نسخةً من الصنف Enumerator الذي يجري عملية عدٍّ (enumerate) وتكرار عبر استدعاء التابع المُمرَّر إليها مع كائنٍ محدَّد، وتمرير وسائط إن أعطيت. إذا مُرِّرت كتلة (block) إلى التابع، فستُستخدم لحساب حجم نسخة الصنف Enumerator دون الحاجة إلى تكرارها (ألقِ نظرة على التابع Enumerator.size). البنية العامة enum_for(method = :each, *args) → enum enum_for(method = :each, *args){|*args| block} → enum المعاملات method التابع المُمرَّر. القيمة الافتراضية لهذا المعامل هي: each:. args* الوسائط المراد تمريرها إلى التابع. args| block*| الكتلة ووسائطها ...

التابع Thread.keys‎ في روبي

يُعيد التابع keys مصفوفة من أسماء المتغيرات محلية الليف (fiber-local variables) على هيئة رموز. البنية العامة keys→ array‎ القيمة المعادة تعاد مصفوفة من أسماء المتغيرات محلية الليف. أمثلة مثال على استخدام التابع keys‎: thr = Thread.new do Thread.current[:cat] = 'meow' Thread.current["dog"] = 'woof' end thr.join #=> #<Thread:0x401b3f10 dead> thr.keys #=> [:dog, :cat]‎ انظر أيضًا التابع key?‎: يتحقق إن كانت السلسلة النصية أو الرمز المعطى موجود على هيئة متغير محلي الليف (fiber-local variable). مصادر قسم التابع keys‎ في الصنف Thread‎ ...

نظرة عامة على وحدة العرض في ريلز

بعد قراءة هذا الدليل، ستعرف: ما هو Action View وكيفية استخدامه مع ريلز. أفضل طريقة لاستخدام القوالب والجزئيات (partials) والتخطيطات. ما الذي يقدمه المساعدون عن طريق Action View. كيفية استخدام العروض المحلية. ما هو Action View؟ في ريلز، تُعَالَج طلبات الويب من خلال Action Controller و Action View. عادةً ما يقع على عاتق وحدة التحكم التواصل مع قاعدة البيانات وتنفيذ الإجراءات CRUD عند الضرورة؛ بعد ذلك، يكون Action View مسؤولًا عن تفسير (compiling) الاستجابة. تُكتَب قوالب Action View باستخدام روبي ...

أدوات Active Support في ريلز

Active Support هو جزء من نواة ريلز التي توفر ملحقات للغة روبي والأدوات المساعدة وغيرها من الأشياء. أحد الأشياء التي يتضمنها هو واجهة برمجية لأدوات قياس (instrumentation API) يمكن استخدامها داخل تطبيق لقياس إجراءات معينة تحدث داخل شيفرة روبي، مثل تلك الموجودة داخل تطبيق ريلز أو إطار العمل نفسه، إذ لا يقتصر ذلك على ريلز فقط. يمكن استخدامها بشكل مستقل في شيفرات روبي البرمجية الأخرى إذا كان ذلك مطلوبًا. في هذا الدليل، ستتعلم كيفية استخدام الواجهة البرمجية لأدوات القياس (instrumentation API) ...

التابع ‎block_given?‎‎ الخاص بالصنف Kernel في روبي

يتحقق التابع block_given?‎ إذا كان yield سينفذ كتلةً برمجيةً في السياق الحالي. الشكل iterator?‎‎ صار شبه مهمل. البنية العامة block_given?→ true or false‎ القيمة المعادة تُعاد القيمة true إذا كان yield سينفذ كتلة برمجية في السياق الحالي. أمثلة مثال على استخدام التابع block_given?‎: def try if block_given? yield else "no block" end end try #=> "no ...

التابع Object.enum_for في روبي

يُنشئ التابع enum_for نسخةً من الصنف Enumerator الذي يجري عملية عدٍّ (enumerate) وتكرار عبر استدعاء التابع المُمرَّر إليها مع كائنٍ محدَّد، وتمرير وسائط إن أعطيت. إذا مُرِّرت كتلة (block) إلى التابع، فستُستخدم لحساب حجم نسخة الصنف Enumerator دون الحاجة إلى تكرارها (ألقِ نظرة على التابع Enumerator.size). البنية العامة enum_for(method = :each, *args) → enum enum_for(method = :each, *args){|*args| block} → enum المعاملات method التابع الذي ستُطبَّق عليه العملية. القيمة الافتراضية لهذا المعامل هي: each:. args* الوسائط المراد تمريرها إلى التابع. args| ...

التابع ‎iterator?‎‎ الخاص بالصنف Kernel في روبي

يتحقق التابع iterator?‎ إذا كان yield سينفذ كتلة برمجية في السياق الراهن. لقد أصبح الشكل ‎iterator?‎ مهملًا إلى حد ما. البنية العامة iterator?→ true or false‎ القيمة المعادة تعاد القيمة true إذا كان yield سينفذ كتلة برمجية في السياق الراهن. وإلا فستعاد false. أمثلة مثال على استخدام التابع iterator?‎: def try if block_given? yield else "no block" end end try ...

مساعدو الاستمارة في وحدة العرض في ريلز

تعتبر الاستمارات (forms) في تطبيقات الويب واجهة أساسية للتفاعل مع المستخدم وجلب بيانات منه. ومع ذلك، يمكن أن تصبح عملية إنشاء استمارةٍ وصيانتها عمليةً مملةً بسبب الحاجة إلى التحكم بالتسميات وبخاصياتها الكثيرة. تخلَّص ريلز من هذا التعقيد بتوفير مساعدين للعرض لإنشاء الاستمارات بسهولة. ومع ذلك، بما أن للمساعدين حالات استخدام مختلفة، يحتاج المطورون إلى معرفة الاختلافات بين توابع كل مساعد قبل استخدامها. بعد قراءة هذا الدليل، ستتعلم: كيفية إنشاء استمارات للبحث ونوع مماثل من الاستمارات العامة التي لا تمثل أي ...

المكتبة Active Model في ريلز

يوفر Active Model مجموعة معروفة من الواجهات لاستعمالها في أصناف النماذج (model classes). إنها تسمح لمساعدي Action Pack بالتفاعل مع النماذج التي ليست من Active Record مثلًا. يساعد Active Model في بناء روابط ORM مخصصة (تقنية ربط الكائنات بالعلاقات) للاستعمال خارج إطار ريلز. يمكنك قراءة المزيد حول Active Model في دليل أساسيات Active Model. قبل الإصدار 3.0 من ريلز، إن رغبت جوهرة أو رغب مطور بامتلاك كائن يتفاعل مع مساعدي Action Pack، فإنه يتطلب إمَّا نسخ أجزاء من شيفرة ريلز، ...

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

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

التابع Binding.receiver في روبي

يعيد التابع local_variables أسماء المتغيرات المحلية المعرفة في Binding على شكل رموز (symbols). هذا التابع هو النسخة المختصرة للشيفرة التالية: binding. eval("local_variables") البنية العامة local_variables → Array القيم المعادة تعاد مصفوفة تحوي أسماء المتغيرات المحلية المعرفة في Binding. أمثلة مثال على استخدام التابع local_variables‎: def foo a = 1 2.times do |n| binding.local_variables #=> [:a, :n] end end انظر أيضًا التابع eval: يقدر تعابير لغة روبي الممررة إليه في السياق Binding. التابع local_variable_set‎: يضبط قيمة المتغير المحلي الممرر ...

التابع Binding.receiver في روبي

يعيد التابع local_variables أسماء المتغيرات المحلية المعرفة في Binding على شكل رموز (symbols). هذا التابع هو النسخة المختصرة للشيفرة التالية: binding. eval("local_variables") البنية العامة local_variables → Array القيم المعادة تعاد مصفوفة تحوي أسماء المتغيرات المحلية المعرفة في Binding. أمثلة مثال على استخدام التابع local_variables‎: def foo a = 1 2.times do |n| binding.local_variables #=> [:a, :n] end end انظر أيضًا التابع eval: يقدر تعابير لغة روبي الممررة إليه في السياق Binding. التابع local_variable_set‎: يضبط قيمة المتغير المحلي الممرر ...

الأمران Break و Continue

أمر Break تُستخدم عبارة Break للخروج من الحلقة التكرارية الحالية قبل موعد خروجها الأصلي، ويحدث هذا في الحالات التي لا تعرف فيها عدد المرات التي يجب أن تنفذها الحلقة، كأن تعتمد على إدخال المستخدم مثلًا. يوضح المثال التالي حلقة while يمكن مقاطعتها، وهو مثال مُطوَّر من برنامج wisdom.sh من المثال المشروح في استخدام مُدخلات لوحة المفاتيح للتحكم في حلقة while : #!/bin/bash # هذا البرنامج يطبع أمثالًا ونصائح # يمكنك الخروج الآن بطريقة أفضل. FORTUNE=/usr/games/fortune while true; do echo "On which topic do you want advice?" echo ...

التابع Thread.thread_variables‎ في روبي

يُعيد التابع thread_variables مصفوفة من أسماء المتغيرات المحلية في المهمة الفرعية (thread-local) على شكل رموز. لاحظ أن هذه المتغيرات ليست محلية الألياف (fiber local). يرجى الاطلاع على صفحة المعامل [] والتابع thread_variable_get لمزيد من التفاصيل. البنية العامة thread_variables→ array‎ القيمة المعادة تعاد مصفوفة من أسماء المتغيرات المحلية في المهمة الفرعية (thread-local) على شكل رموز. أمثلة مثال على استخدام التابع thread_variables‎: thr = Thread.new do Thread.current.thread_variable_set(:cat, 'meow') Thread.current.thread_variable_set("dog", 'woof') end thr.join ...

التابع Hash.default_proc في روبي

يضبط التابع default_proc إن استدعي بالشكل default_proc = proc_obj القيمة الافتراضية للكتلة التي ستُنفَّذ عند فشل أية عملية بحث عن مفتاح للكائن Hash المعطى. البنية العامة default_proc = proc_obj or nil الأمثلة مثال على استعمال التابع default_proc: h.default_proc = proc do |hash, key| hash[key] = key + key end h[2] #=> 4 h["cat"] #=> "catcat" انظر أيضا التابع new: ينشئ التابع new جدول Hash جديد فارغ ثم يعيده. التابع default: يضبط عند استدعائه بالشكل default = obj القيمة الافتراضية obj ...

التابع TracePoint.disable‎ في روبي

يعطل التابع disable التعقب. في حال إعطاء كتلة لهذا التابع، فلن يُعطّل التعقب إلا ضمن نطاق تلك الكتلة. البنية العامة disable → true or false disable { block } → obj‎ القيمة المعادة تعاد القيمة true إن كان التعقب مفعَّلًا أو تعاد القيمة false إذا كان معطَّلًا مسبقًا. أمثلة مثال على استعمال التابع disable: trace.enabled? #=> true trace.disable #=> true (previous status) trace.enabled? #=> false trace.disable ...

break في PHP

(PHP 4, PHP 5, PHP 7) تنهي break تنفيذ حلقات for أو foreach أو while أو do-while أو بنية switch. تأخذ break معاملًا عدديًا اختياريًا يُحدّد من خلاله عدد البنى المتداخلة التي‏ يجب إيقاف تنفيذها. القيمة الافتراضية لهذا المعامل هي 1، والذي يعني إيقاف تنفيذ البنية الحالية فقط. <?php $arr = array('one', 'two', 'three', 'four', 'stop', 'five'); while (list(, $val) = each($arr)) { if ($val == 'stop') { break; /* يمكن أيضًا كتابة /* ...

التابع Module.new‎ في روبي

ينشئ التابع new وحدة مجهولة (anonymous module) جديدة. في حال إعطاء كتلة، فسيٌمرر إليها الوحدة (module)، وستُقيم الكتلة في سياق هذه الوحدة مثل module_eval. اضبط الوحدة وأسند إليها قيمةً ثابتةً (يبدأ اسمها بحرف كبير) إذا كنت تريد معاملتها كأنها وحدة عادية. البنية العامة new→ mod new {|mod| block }→ mod‎ القيمة المعادة تعاد وحدة مجهولة (anonymous module) جديدة. أمثلة مثال على استخدام التابع new‎: fred = Module.new do def meth1 "hello" end def meth2 ...

أولوية العمليات في روبي

يوضح الجدول التالي أولوية العمليات في روبي من الأعلى إلى الأدنى. تُنفَّذ العمليات ذات الأولوية العليا قبل العمليات ذات الأولوية الأقل منها عند وجودها في نفس التعبير أو السطر البرمجي في الشيفرة. ترتيب أولوية العمليات !، ~، + unary ** - unary *، /، % +، - >>، << & |، ^ <، =<، >، => <=>، ==، ===، =!، ~=، ~! && || ..، ... ?، : modifier-rescue =، =+، =-، ...إلخ. ?defined not and ،or modifier-until ،modifier-while ،modifier-unless ...

break في PHP

(PHP 4, PHP 5, PHP 7) تنهي break تنفيذ حلقات for أو foreach أو while أو do-while أو بنية switch. تأخذ break معاملًا عدديًا اختياريًا يُحدّد من خلاله عدد البنى المتداخلة التي‏ يجب إيقاف تنفيذها. القيمة الافتراضية لهذا المعامل هي 1، والذي يعني إيقاف تنفيذ البنية الحالية فقط. <?php $arr = array('one', 'two', 'three', 'four', 'stop', 'five'); while (list(, $val) = each($arr)) { if ($val == 'stop') { break; /* يمكن أيضًا كتابة /* ...

التابع TracePoint.enable‎ في روبي

يفعِّل التابع enable التعقب. في حال إعطاء كتلة لهذا التابع، فلن يُنشّط التعقب إلا في نطاق تلك الكتلة. البنية العامة enable→ true or false enable { block } → obj‎ القيمة المعادة تعاد القيمة true إن كان التعقب مفعَّلًا أو تعاد القيمة false إذا كان معطَّلًا مسبقًا. أمثلة مثال على استعمال التابع enable: trace.enabled? #=> false trace.enable #=> false (previous state) # ...

التابع 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) من ...

نظرة سريعة على التخزين المؤقت في ريلز

هذا الدليل عبارة عن مدخل يطلعك على كيفية تسريع تطبيق ريلز عبر التخزين المؤقت. يعني التخزين المؤقت تخزين المحتوى الذي أُنشِئ أثناء دورة الاستجابة للطلب وإعادة استخدامه عند الاستجابة لطلبات مشابهة. غالبًا ما يكون التخزين المؤقت الطريقة الأكثر فاعلية لتعزيز أداء التطبيق. من خلال التخزين المؤقت، يمكن لمواقع الويب التي تعمل على خادم واحد مع قاعدة بيانات واحدة الحفاظ على تحميل الآلاف من المستخدمين المتزامنين. يوفر ريلز مجموعة مميزة من ميزات التخزين المؤقت. سوف يعلمك هذا الدليل نطاق وغرض كل ...

استخدام الأمر المُضمَّن Shift في Bash

وظيفة أمر shift هو أحد أوامر صدفة بورن التي تأتي مع صدفة Bash أيضًا، ويأخذ هذا الأمر وسيطًا (argument) واحدًا ويكون ذلك الوسيط رقمًا، وتُنقل المعامِلات الموضعية إلى اليسار بمقدار هذا الرقم "N"، أما المعامِلات التي تلي ذلك، من 1+N وما بعده إلى #$ فإن أسماءها تُغيَّر إلى أسماء متغيرات من 1$ إلى #$ +1 - N. فمثلًا لنقل أن لديك أمرًا يأخذ عشرة وسائط، وN تساوي 4، إذًا 4$ تصبح 1$، و 5$ تصبح 2$ وهكذا إلى أن تصل ...

التابع loop‎ الخاص بالصنف Kernel في روبي

ينفذ التابع loop الكتلة البرمجية المعطاة بشكل متكرر. في حال لم تُعطَ أية كتلة، فسيُعاد كائن من الصنف enumerator بدلاً من ذلك. يؤدي اطلاق الاستثناء StopIteration داخل الكتلة إلى إيقاف الحلقة التكرارية. في هذه الحالة، سيعيد التابع loop قيمة "النتيجة" المخزنة في الاستثناء. البنية العامة loop { block } loop→ an_enumerator‎ القيمة المعادة يؤدي اطلاق الاستثناء StopIteration داخل الكتلة إلى إعادة قيمة "النتيجة" المخزنة في الاستثناء. أما في حال لم تُعطَ أية كتلة، فسيُعاد كائن من الصنف enumerator. أمثلة مثال على ...

الكائنات في PHP

تهيئة الكائن لإنشاء كائن جديد، استخدم التعبير البرمجي new لتهيئة كائن من صنفٍ ما (class): <?php class foo { function do_foo() { echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); ?> راجع فصل الأصناف والكائنات (Classes and Objects) للمزيد من المعلومات. التحويل إلى كائن إذا حوّلنا كائنًا إلى كائنٍ آخر فلن يُعدَّل فيه شيء، أما إذا حولنا قيمةً من أي نوعٍ آخر إلى كائن، فستُنشَأ نسخةً جديدةً من ...

الكائنات في PHP

تهيئة الكائن لإنشاء كائن جديد، استخدم التعبير البرمجي new لتهيئة كائن من صنفٍ ما (class): <?php class foo { function do_foo() { echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); ?> راجع فصل الأصناف والكائنات (Classes and Objects) للمزيد من المعلومات. التحويل إلى كائن إذا حوّلنا كائنًا إلى كائنٍ آخر فلن يُعدَّل فيه شيء، أما إذا حولنا قيمةً من أي نوعٍ آخر إلى كائن، فستُنشَأ نسخةً جديدةً من ...

التابع Thread.abort_on_exception=‎ في روبي

يضبط التابع abort_on_exception عند استدعائه بالشكل abort_on_exception= boolean حالة الشرط العام "المقاطعة عند حدوث استثناء؟" (abort on exception) إلى القيمة المنطقية boolean. عندما تكون القيمة المنطقية هي true، إذا تم إيقاف هذه المهمة الفرعية بواسطة استثناء، فسيطلق ذلك الاستثناء مجددًا في المهمة الفرعية الرئيسية. وستعاد الحالة الجديدة. يوجد أيضًا تابع نسخة (instance method) لتعيين هذا الخيار لمهمة فرعية معينة، راجع الصفحة abort_on_exception=‎. البنية العامة abort_on_exception= boolean→ true or false‎ القيمة المعادة تعاد القيمة المنطقية boolean بعد ضبطها للشرط العام "المقاطعة ...

التعبير ARGF.inplace_mode = ext في روبي

يضبط التابع inplace_mode عند استدعائه بالشكل inplace_mode = ext امتداد اسم الملف بوضعية التعديل الموضعي (in-place editing mode) إلى السلسلة النصية ext المعطاة. تضاف هذه القيمة المعطاة إلى أسماء كل الملفات التي يتم تعديلها، ويُحفَظ الملف المُعدَّل تحت هذا الاسم الجديد. البنية العامة inplace_mode = ext → ARGF القيمة المعادة يعاد المجرى ARGF. أمثلة ستُبدِّل الشيفرة التالية العبارة "bar" مكان أول ظهور للعبارة "foo" في كل سطر من أسطر الملف file.txt ثمَّ سيُكتب السطر الجديد في الملف file.txt.bak: $ ruby ...

التابع Thread.report_on_exception=‎ في روبي

يضبط التابع report_on_exception عند استدعائه بالشكل report_on_exception= boolean‎ حالة "التبليغ عند الاستثناء" (report on exception). عندما تكون القيمة المنطقية هي true، سترث كل المهام الفرعية التي تم إنشاؤها لاحقا الشرط (condition) وتبعث رسالة إلى المجرى ‎$stderr إذا أدى استثناء ما إلى إنهاء مهمة فرعية. يوجد أيضًا تابع نسخة (instance level method) لتعيين هذا الخيار لمهمة فرعية معينة؛ راجع report_on_exception=‎. البنية العامة report_on_exception= boolean→ true or false‎ القيمة المعادة تعاد القيمة المنطقية boolean التي تمثل الحالة الجديدة لحالة "التبليغ عند الاستثناء". ...

الخاصية ‎event.stopPropagation()‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ في jQuery

event.stopPropagation()‎ القيمة المعادة تُعيد هذه الخاصية القيمة undefined. الوصف تمنع هذه الخاصية الحدث من الانتقال عبر شجرة DOM إلى العناصر الأب (event bubbling)، مما يمنع إبلاغ أي من المعالجات الأب عن الحدث. event.stopPropagation()‎ أُضيف مع الإصدار: 1.0. لا تقبل هذه الخاصية أي وسائط. تستخدم الخاصية event.isPropagationStopped()‎ للحقق من استدعاء هذا التابع (على كائن الحدث هذا). تعمل هذه الخاصية مع الأحداث المخصصة المُطلَقة بواسطة التابع trigger()‎ أيضًا. لاحظ أن هذه الخاصية لن تمنع المعالجات الأخرى من العمل على نفس العنصر. ملاحظات ...

الخاصية ‎event.stopPropagation()‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ في jQuery

event.stopPropagation()‎ القيمة المعادة تُعيد هذه الخاصية القيمة undefined. الوصف تمنع هذه الخاصية الحدث من الانتقال عبر شجرة DOM إلى العناصر الأب (event bubbling)، مما يمنع إبلاغ أي من المعالجات الأب عن الحدث. event.stopPropagation()‎ أُضيف مع الإصدار: 1.0. لا تقبل هذه الخاصية أي وسائط. تستخدم الخاصية event.isPropagationStopped()‎ للحقق من استدعاء هذا التابع (على كائن الحدث هذا). تعمل هذه الخاصية مع الأحداث المخصصة المُطلَقة بواسطة التابع trigger()‎ أيضًا. لاحظ أن هذه الخاصية لن تمنع المعالجات الأخرى من العمل على نفس العنصر. ملاحظات ...

التابع Enumerator::Lazy.new في روبي

ينشئ التابع new كائن تعداد جديد من النوع Enumerator::Lazy. عندما يُبدَأ بتعداد (enumerate) المُعدِّد (Enumerator) -عبر استدعاء التابع force مثلًا-، سيُعدَّد الكائن المُمرَّر إلى هذا التابع وستُمرَّر كل قيمة إلى الكتلة المعطاة. يمكن للكتلة أن تعيد القيمة الناتجة باستعمال yielder. البنية العامة new(obj, size=nil) { |yielder, *values| ... } المعاملات obj الكائن المراد تعداده عبر النمط الكسول (lazy). size القيمة الافتراضية هي: nil. أمثلة مثال على استعمال التابع new لإنشاء تابع باسم filter_map في النمط الكسول (lazy) وغير الكسول (non-lazy): module Enumerable ...

حلقة WHILE في SQL

تهدف حلقة WHILE إلى تكرار عددٍ من التعليمات باستمرار تحقق الشرط ضمنها، إذ يُتأكَّد من تحقّق الشرط قبل البدء بتنفيذ التعليمات التي تحتويه، وتكون البنية العامّة لها: [ <<label>> ] WHILE boolean-expression LOOP statements END LOOP [ label ]; إذ يمكن تحديد تسمية label لها وتوضع التعليمات statements ضمنها بعد الكلمة المفتاحية LOOP. أما في محرك MySQL فتصبح بالشكل الآتي: [begin_label:] WHILE search_condition DO statement_list END WHILE [end_label]; وفي محرك SQL Server تكون بالشكل: WHILE boolean_expression { sql_statement | ...

معلومات إضافية عن روبي

هل تساءلت يومًا لماذا روبي مشهورة إلى هذا الحد؟ يقول المعجبون بها أنَّها لغة جميلة وذات بنية متقنة. ويقولون أيضًا أنَّها لغة عملية وسهلة الاستعمال. فماذا تعطي وبماذا تتمتع؟ مثالية منشئ لغة روبي حققت لغة روبي توازنًا دقيقًا بين لغات البرمجة. عمل منشئ هذا اللغة - الياباني Yukihiro “Matz” Matsumoto - على دمج أجزاءٍ من لغات البرمجة المفضلة لديه (Perl، و Smalltalk، و Eiffel، و Ada، و Lisp) لإنشاء لغة جديدة تحقق التوازن بين البرمجة الوظيفية (functional programming) والبرمجة الأمرية ...

التابع open‎ الخاص بالصنف Kernel في روبي

ينشئ التابع open كائنًا من النوع IO متصلًا بالمجرى أو الملف أو العملية الفرعية (subprocess) المحددة. البنية العامة open(path [, mode [, perm]] [, opt]) → io or nil open(path [, mode [, perm]] [, opt]) {|io| block } → obj‎ في حال إعطاء كتلة، فستُسدعَى بتمرير كائن من النوع IO كوسيط إليها، والذي سيُغلق تلقائيًا عند الانتهاء من تنفيذ الكتلة ثم سيعاد الناتج. إذا بُدئ الوسيط path بشرطة عمودية ("|") ، فسيتم إنشاء عملية فرعية (subprocess)، متصلة بالمُستدعي (caller) بواسطة ...

التابع Regexp.match‎ في روبي

يُعيد التابع match كائنًا من النوع MatchData يصف المطابقة بين تعبير نمطي وسلسلة نصية، أو يعيد القيمة nil إذا لم يكن هناك تطابق. هذا يُكافئ استرداد قيمة المتغير الخاص ‎$~‎ بعد تنفيذ عملية مطابقة عادية. في حال تمرير المعامل الثاني، فسيحدد موضع البدء في السلسلة النصية. /(.)(.)(.)/.match("abc")[2] #=> "b" /(.)(.)/.match("abc", 1)[2] #=> "c"‎ في حال تمرير كتلة، فسيستدعي الكتلة باستخدام MatchData إذا نجحت المطابقة، وهكذا يمكنك كتابة: /M(.*)/.match("Matz") do |m| puts m[0] puts m[1] end بدلًا من: ...

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

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

الصنف 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 # ...

التابع IO.pread‎ في روبي

يقرأ التابع pread من المجرى الذي استدعي معه عددًا محدَّدًا من البايتات باستخدام استدعاء النظام pread، ثم يُعيدها كسلسلة نصية من غير تعديل إزاحة (offset) الواصف الأساسي. هذا التابع مفيد مقارنة بالجمع بين التابعين seek و read معًا في كونه ذريًا (atomic)، مما يسمح لعدة مهام فرعية/عمليات بتشارك نفس المجرى لقراءة الملف من مواضع مختلفة. هذا سيتجاوز أي مساحة تخزين مؤقت للمستخدمين في المجرى. سيُطلق الاستثناء SystemCallError عند حصول خطأ، أو الاستثناء EOFError عند الوصول إلى نهاية الملف، أو الاستثناء NotImplementedError ...

التابع IO.pwrite‎ في روبي

يكتب التابع pwrite السلسلة النصية المُمرَّرة إليه في موضع محدَّد من المجرى الذي استُدعي معه باستخدام استدعاء دالة النظام pwrite()‎. هذا مفيد مقارنة بالجمع بين التابعين seek و write معا في كونه ذريًا (atomic)، مما يسمح لعدة مهام فرعية/عمليات بالتشارك في نفس المجرى لقراءة الملف من مواضع مختلفة. هذا سيتجاوز أي مساحة تخزين مؤقت للمستخدمين من المجرى. سيعيد التابع pwrite عدد البايتات المكتوبة، أو سيُطلق الاستثناء SystemCallError في حال حدوث خطأ، أو NotImplementedError إذا لم يكن نظام الشغيل يدعم استدعاء النظام. البنية ...

عملية تهيئة ريلز

يشرح هذا الدليل العمل الداخلي لعملية التهيئة في ريلز. وهو دليل متعمق للغاية وموصى به لمطوري ريلز المتقدمّين. ستتعلم بعد قراءة هذا الدليل: كيفيّة استخدام خادم ريلز (rails server). التسلسل الزمني لتهيئة ريلز. أين تُطلَب الملفّات المختلفة أثناء تسلسل التمهيد. كيفيّة تعريف واجهة Rails::Server واستخدامها. يتضمّن هذا الدليل كل استدعاء لتابع مطلوب لتشغيل مكّدس Ruby on Rails (أي stack) لتطبيق ريلز افتراضي، مع شرح كل جزء بالتفصيل. بالنسبة لهذا الدليل، سنركّز على ما يحدث عند تنفيذ rails server لبدء إقلاع ...

أساسيات إنشاء الإضافات في ريلز

تُعدّ الإضافات في ريلز امتدادًا أو تعديلًا للإطار الأساسي. توفر الإضافات: وسيلة لمطورين لمشاركة الأفكار المتطورة دون الإضرار بقاعدة الشيفرات الثابتة. بنية مجزأة بحيث يمكن إصلاح أو تحديث وحدات الشيفرة وفقًا لجدول إصدارها الخاص. منفذ للمطورين الأساسيين حتى لا يضطروا إلى تضمين كل ميزة جديدة بصريح العبارة. بعد قراءة هذا الدليل، ستتعلم: كيفية إنشاء الإضافات من الصفر. كيفية كتابة وتشغيل الإختبارات للإضافات. يصف هذا الدليل كيفية إنشاء واختبار إضافة من شأنها: توسيع أصناف روبي الأساسية مثل Hash و String. إضافة ...

التابع ARGF.each_line في روبي

يعيد التابع each_line قيمة قابلة للعد (enumerator) تتكرر (iterates) عبر كل سطر (الذي يفصل بالفاصلة الممرَّرة) من كل ملف من الملفات الموجودة في ARGV. في حال تمرير كتلة برمجية للتابع each_line، فسيُمرّر كل سطر بدوره إلى تلك الكتلة، وإلا فستعاد قيمة قابلة للعد (enumerator). يسمح لك هذا التابع بمعالجة الملفات المُمرَّرة من سطر الأوامر كما لو كانت ملفًا واحدًا مكونًا من سلسلة من هذه الملفات المسماة. بعد إعادة السطر الأخير من الملف الأول، سيُعاد السطر الأول من الملف الثاني. يمكن ...

المعامل void في JavaScript

المعامل void يُقدِّر قيمة التعبير المعطى (expression) ثم يُعيد القيمة undefined. البنية العامة void expression الوصف هذا المعامل يسمح بتقدير قيمة التعابير البرمجية للحصول على قيمة منها تساوي undefined (أي ستُنفَّذ تلك التعابير البرمجية لكن القيمة المعادة هي undefined). يُستخدَم المعامل void عادةً للحصول على القيمة الأوليّة undefined، وذلك باستخدام ‎void(0)‎ (أو الشكل المكافئ void 0)، يجدر بالذكر أنَّ هذا الاستخدام مفيدٌ إذا أعيد ضبط قيمة المتغير العام undefined إلى قيمة أخرى. أمثلة الدوال ذاتية الاستدعاء عند استخدام دالة ذاتية ...

معاملات الدوال

يمكن تعريف الدوال مع عدد غير محدّد من المعاملات، وهناك ثلاث صيغ للمعاملات يمكن استخدامها معًا في نفس الوقت. المعاملات ذات القيم الافتراضية يمكن تحديد قيمة افتراضية للمعامل عند تعريفه، وبهذا يمكن استدعاء الدالة مع عدد أقلّ من المعاملات المعرّفة، فعلى سبيل المثال: def ask_ok(prompt, retries=4, reminder='Please try again!'): while True: ok = input(prompt) if ok in ('y', 'ye', 'yes'): ...

المكتبة Active Record في ريلز

إنَّ Active Record هو مكتبة تربط أصنافًا بجداول قاعدة بيانات علائقية لتأسيس طبقة ثابتة لا تحتاج إلى ضبط للتطبيقات. توفر المكتبة صنفًا أساسيًّا يضبط - عند تفريع أصناف منه - العلاقة الرابطة بين الصنف الجديد وجدول موجود مسبقًا في قاعدة البيانات. في سياق أي تطبيق، يشار إلى هذه الأصناف عادةً على أنها «نماذج» (models). يمكن ربط النماذج Models أيضًا بنماذج أخرى عبر تعريف ارتباطات. يعتمد Active Record كل الاعتماد على التسمية، إذ يستعمل أسماء الصنف والارتباط لتأسيس علاقة رابطة (mapping) ...

العمليات على المتغيرات في Bash

العمليات الحسابية على المتغيرات ناقشنا العمليات الحسابية من قبل في التوسعات في Bash، انظر التوسع الحسابي. طول المتغير استخدم صيغة {VAR#}$ لحساب عدد المحارف في متغير ما، وإن كان VAR هو أحد المحرفيْن * أو @ فإن القيمة يحل محلها عدد المعامِلات الموضعية أو عدد العناصر داخل المصفوفة بشكل عام، انظر المثال التالي: [hsoub in ~] echo $SHELL /bin/bash [hsoub in ~] echo ${#SHELL} 9 [hsoub in ~] ARRAY=(one two three) [hsoub in ~] echo ${#ARRAY} 3 عمليات التحول في المتغيرات الإحلال Substitution {VAR:-WORD}$ إن لم ...

ارتباطات Active Record في ريلز

يغطي هذا الدليل مزايا الارتباطات Active Record. بعد قراءة هذا الدليل، ستتعلم: كيفية التصريح عن الارتباطات بين نماذج Active Record. الأنواع المختلفة للارتباطات في Active Record. كيفية استعمال التوابع المضافة إلى نماذجك عبر إنشاء الارتباطات. لمَ نستخدم الارتباطات؟ في ريلز، يعدّ الارتباط اتصالًا بين نموذجين من Active Record. لمَ نحتاج إلى الارتباطات بين النماذج؟ لأنها تجعل العمليات الشائعة سهلة وبسيطة في تطبيقك. مثلًا، لنفرض أن لدينا تطبيق ريلز بسيط يحوي نموذجًا للكتّاب ونموذجًا للكتب؛ كل كاتب يملك العديد من الكتب. ...

الشروع في العمل مع المحركات في ريلز

ستتعرف في هذا الدليل على المحركات (engines) وكيف يمكن استخدامها لتوفير وظائف إضافية لتطبيقاتها المضيفة من خلال واجهة واضحة وسهلة الاستخدام للغاية. بعد قراءة هذا الدليل، ستتعلم: مما يتكون المحرك. كيف وُلِّد المحرك. كيفية بناء ميزات للمحرك. كيفية ربط المحرك في التطبيق. كيفية استبدال وظيفة المحرك في التطبيق. تجنب تحميل أطر ريلز مع خطافات التحميل (Load Hooks) وخطافات الضبط (Configuration Hooks). ما هي المحركات؟ تُعدُّ المحركات تطبيقات مصغرة توفر وظائف لتطبيقاتها المضيفة. تطبيق ريلز هو بالفعل محرك "supercharged"، مع الصنف ...

البدء مع ريلز

يغطي هذا الدليل بدء وتشغيل ريلز. بعد قراءة هذا الدليل، ستتعلم: كيف تثبّت ريلز وتُنشئ تطبيق ريلز جديد وتربط تطبيق ريلز بقاعدة بيانات. التخطيط العام لتطبيق ريلز. المبادئ الأساسية للنمط MVC (النموذج [Model]، والواجهة [View]، ووحدة التحكم [Controller]) والتصميم RESTful. كيف تولد سريعًا أجزاء البداية لتطبيق ريلز. افتراضات الدليل صُمِّم هذا الدليل للمبتدئين الراغبين ببدء استعمال إطار العمل ريلز من الصفر. ولا يفترض أن لك سابق خبرة بريلز. إنَّ ريلز هو إطار عمل لتطبيقات الويب يعمل على لغة البرمجة روبي. ...

التحكم بالتدفق (Control Flow) في Kotlin

كما في أيّة لغة برمجة فإن لغة Kotlin تحتوي على تعابير للتحكم بالتدفق، وهي: تعبير if، وتعبير when، وحلقة for، وحلقة while. وتدعم كذلك الكلمتين المفتاحيّتَين continue و break المستخدَمتَين في الحلقات (راجع أوامر الرجوع والقفز returns and jump). تعبير if يُعدُّ الشرط if في لغة Kotlin تعبيرًا يعيد قيمة، وبالتالي لا حاجة للصيغة condition ? then : else لأن تعبير if يقوم بهذا الدور كما في الشيفرة الآتية: // الاستخدام الاعتيادي var max = a if (a < b) max = b // ...

المعامل []‎ الخاص بالصنف Thread في روبي

يعدُّ المعامل [] مرجعًا للخاصيات (Attribute Reference)، إذ يُعيد قيمة متغير محلي الليف fiber) local variable، أو الليف الأصلي للمهمة الفرعية الحالية إن لم يكن المتغير موجودًا داخل ليف) باستخدام إما رمز أو سلسلة نصية. إن لم يكن المتغير المعطى (انظر فقرة البنية العامة) موجودًا، فستعاد nil. [ Thread.new { Thread.current["name"] = "A" }, Thread.new { Thread.current[:name] = "B" }, Thread.new { Thread.current["name"] = "C" } ].each do |th| th.join puts "#{th.inspect}: #{th[:name]}" end‎ هذا سوف ينتج: ...

التابع ‎.each()‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ في jQuery

‎.each( function )‎ القيمة المعادة يُعيد كائنًا من النوع jQuery. الوصف يكرر هذا التابع، عبر كائن jQuery، تنفيذ دالة لكل عنصر متطابق. ‎.each( function )‎ أُضيف مع الإصدار: 1.0. function دالة تُنفَّذ لكل عنصر متطابق، وهي على الشكل Function( Integer index, Element element )‎. صُمِم التابع ‎.each()‎ لجعل بنية حلقات المرور على عناصر DOM موجزة وأقل عُرضةً للخطأ. عند استدعائه فإنه سيمر على جميع عناصر DOM التي تشكل جزءًا من كائن jQuery. في كل مرة تُشغل فيها دالة رد نداء، ...

أساسيات Active Model في ريلز

يجب أن يوفر لك هذا الدليل كل ما تحتاج إليه للبدء في استخدام أصناف Model. يسمح Active Model لمساعدي Action Pack بالتفاعل مع كائنات روبي الصرفة. يساعد Active Model أيضًا على إنشاء قواعد بيانات ORM مخصصة للاستخدام خارج إطار ريلز. بعد قراءة هذا الدليل، ستتعلم: كيف يعمل نموذج Active Record. كيف تعمل ردود النداء وعمليات التحقق. كيف تعمل المُسَلسِلات (serializers). كيف يتكامل Active Model مع إطار تدويل ريلز (i18n). مقدمة Active Model هو مكتبة تحتوي على وحدات مختلفة تستخدم في ...

الحلقة while التكرارية في أردوينو

تكرِّر الحلقة while تنفيذ الكتلة البرمجية التي ضمنها بشكل مستمر ولا نهائي ما دامت قيمة الشرط المنطقي الموجود بين القوسين هي true (اطلع على البينة العامة)؛ متى ما أصبحت قيمة الشرط المنطقي false، تتوقف الحلقة وتخرج. يجب أن يحدث أي تغيير في قيمة الشرط وإلا لن تخرج الحلقة مطلقًا، لذا يجب أن تزيد أو تنقص قيمة المتغير الذي يُفحَص ضمن الشرط المنطقي أو يجب أن يُستعمَل شرط خارجي مثل فحص قيمة حساس أو ما شابه. البنية العامة while(condition){ // ...

الكلمة return المفتاحية في أردوينو

تقاطع الكلمة return المفتاحية تنفيذ أيَّ دالةٍ وتعيد قيمةً من الدالة إلى من استدعاها إن حدُّدت. البنية العامة return; return value; // value في هذه الصياغة، ستعاد القيمة يمكن أن تكون القيمة value المعادة أيُّ نوعٍ من أنواع المتغيرات أو الثوابت المراد إعادته إلى من استدعى الدالة. أمثلة يوضح المثال التالي كيفية إنشاء دالة توازن القيمة المقاسة من حساس مع عتبة معينة: int checkSensor(){ if (analogRead(0) > 400) { return 1; ...

القوسان {} المعقوصان في أردوينو

القوسان المعقوصان {} (curly braces، أو تدعى braces فقط أو curly brackets) هما جزء لا يتجزأ من لغة C. يستعملان في بُنى عديدة مثل بنى التحكم وغيرها وهذا يربك أحيانًا المبتدئين أثناء تعلمهم اللغة. يجب أن يُغلَق القوس المعقوص } الافتتاحي بالقوس المعقوص { الختامي دومًا. أي يجب أن تكون الأقواس المعقوصة في حالة توازن دائمة. تتضمن بيئة عمل أردوينو (Arduino IDE) ميزة التحقق من توازن الأقواس المعقوصة. حدِّد فقط أحد الأقواس المعقوصة أو اضغط على نقطة الإدخال التي تلي ...