مقدمة لمشغلي روبي * سبلات ومزدوجة ** سبلات

مقدمة لمشغلي روبي * سبلات ومزدوجة ** سبلات

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

واحد * سبلات

مشغل سبلات له استخدامات لا نهاية لها تقريبا. لكن الفكرة الرئيسية هي أنه عندما لا ترغب في تحديد عدد الوسائط التي لديك ، يمكنك استخدام عامل تشغيل splat. أبسط مثال سيكون شيئًا كهذا:

شيء مفيد آخر هو أن عامل splat يمكنه تحويل مصفوفة إلى عدة وسيطات:

arr = ["first", "second", "third"]def threeargs(*arr)#makes three arguments

يمكنك أيضًا استخدام عامل splat للاستيلاء على أي جزء من المصفوفة:

first, *rest, last = ["a", "b", "c", "d"]p first # "a"p rest # ["b", "c"]p last # "d"

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

first, *rest, last = ["a", "b", "c", "d"]p rest[0] # "b"

هذه هي أساسيات عامل splat الفردي ، لكني أحثك ​​على العبث بها أكثر. يمكنه القيام بأشياء مثل دمج المصفوفات ، وتحويل التجزئة والسلاسل إلى مصفوفات ، أو سحب العناصر من المصفوفة!

مزدوج ** سبلات

ظهر عامل التشغيل المزدوج في Ruby 2.0. إنها تشبه إلى حد كبير splat الأصلي مع اختلاف واحد: يمكن استخدامها للتجزئة! إليك مثال على الاستخدام الأساسي للدائرة المزدوجة.

def doublesplat(**nums) p **numsenddoublesplat one: 1, two: 2 # {:one=>1, :two=>2}

ضع كل شيء معا

آمل أن ترى أن الاحتمالات لا حصر لها باستخدام هذين معًا. الشيء الرئيسي الذي يجب أخذه في الاعتبار هو أنك تستخدم splats كمعامل في طريقة عندما لا تكون متأكدًا من عدد الوسائط التي ستستخدمها هذه الطريقة.

أخيرًا ، لقد صنعت وظيفة صغيرة توضح كيف يمكنك تصفية أي حجة ليست زوجًا من القيم الرئيسية باستخدام دائرة مفردة ودائرة مزدوجة.

def dubSplat(a, *b, **c) p cenddubSplat(1,2,3, 4, a: 40, b: 50)#{:a=>40, :b=>50}

شكرًا على القراءة ، وحاول الآن اللعب بها بنفسك!