سؤال

لدي مثالان يقدمان نفس النتيجة.

مع كتلة:

giveacodicetagpre.

ومع الطريقة:

giveacodicetagpre.

الحل الثاني يبدو أكثر تباين، لكنني وجدت بعض الاستخدامات الأولى في رمز التطبيق الخاص بنا.سؤالي هو: في أي موقف يوصى به الأول؟ما هي إيجابيات وسلبيات كل واحد؟

هل كانت مفيدة؟

المحلول

الفرق الرئيسي بين كتلة ووظيفة حسب مثالك هو أن الكتلة تعمل في سياق وظيفة الاتصال .

حتى إذا كان مثالك هو:

giveacodicetagpre.

الرمز داخل الكتلة يمكنه الوصول إلى المتغير X الذي تم تعريفه خارج الكتلة. وهذا ما يسمى إغلاق. لا يمكنك القيام بذلك إذا كنت تدعو فقط وظيفة حسب مثالتك الثانية.

شيء آخر مثير للاهتمام حول الكتل هو أنها يمكن أن تؤثر على تدفق التحكم في الوظيفة الخارجية. لذلك من الممكن القيام به:

giveacodicetagpre.

إذا عرجت مكالمة بعضها داخل الكتلة قيمة حقيقية، فستظهر الكتلة. سيعود هذا من كتلة وخارج طريقة Dosomething . porkleworkle لن تحصل على الإخراج.

في الأمور الخاصة بك، لا تعتمد على أي من هذه، لذلك ربما يكون استخدام مكالمات الوظائف منظفا كبيرا.

ومع ذلك، هناك العديد من الحالات التي تستخدم فيها كتل تسمح لك للاستفادة من هذه الأشياء لا تقدر بثمن.

نصائح أخرى

عادة ما يستخدم الناس كتل عندما يريدون تشغيل قطعة من التعليمات البرمجية داخل قطعة من التعليمات البرمجية أخرى.أمثلة:

giveacodicetagpre.

هذه الكتل مغلقة على سياقها المعجمي (أنها تلتقط المتغيرات من حيث يتم الإعلان عن الكتلة، وحملها إلى المكان الذي يتم فيه استدعاء الكتل).

الهيكل التخطيطي للطريقة التي تقبل كتلة.

giveacodicetagpre.

في مثالك الأول، ربما يكون استخدام كتلة غير مبرر (IMHO).معقدة للغاية دون سبب واضح.

عند استدعاء with_params ()، لا يمكنك إرسال البيانات فقط، كما توفر أيضا بعض التعليمات البرمجية لتشغيلها.معرفة ما إذا كانت كتل مختلفة يتم إرسالها إلى مكالمة with_params ():

giveacodicetagpre.

وفي مكان آخر:

giveacodicetagpre.

إذا كانت الكتل هي كل نفس أو with_params () يتم استدعاؤها للتو من مكان واحد، فقد تفكر في القضاء على الكتل.

لتلخيص: استخدم الكتل إذا كنت ترغب في المرور في طريقة أجزاء مختلفة من التعليمات البرمجية (كتل) بالإضافة إلى البيانات: Hey with_params، خذ هذه البيانات (Object_ID)، بالمناسبة، قم بتشغيل هذا الرمز (Block)بينما كنت في ذلك.

btw تقوم بعمل أشياء مختلفة في المثالين: مع ith_params () إرجاع

giveacodicetagpre.

بعد تقييم الكتلة.و get_params () فقط إرجاع

giveacodicetagpre.

كتلة تعتمد تماما على التعليمات البرمجية الخاصة بك، ولكن وظيفة لها رمز خاص بها.

لذلك، إذا كان الرمز الخاص بك يختلف الوضع حسب الموقف، فاستخدم الكتلة. إذا لم يكن كذلك، قم ببناء وظيفة واستخدامها كمربع كتلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top