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

من موسوعة حسوب
< Ruby‏ | Hash

يعيد التابع invert كائن جديد من النوع Hash يحوي قيم الكائن Hash الذي استدعي معه كمفاتيح ومفاتيحه كقيم فيه.

البنية العامة

invert  new_hash

القيمة المعادة

يعاد كائن جديد من النوع Hash تكون فيه قيم الكائن Hash المعطى كمفاتيح ومفاتيحه كقيم فيه.

أمثلة

إذا وُجِد بالفعل مفتاح بنفس القيمة في الكائن Hash المعطى، فسيستخدم التابع invert آخر واحد مُعرَّف، وستُتجاهل القيم التي تسبقه. انظر مثلًا إلى المثال التالي:

h = { "n" => 100, "m" => 100, "y" => 300, "d" => 200, "a" => 0 }
h.invert   #=> {0=>"a", 100=>"m", 200=>"d", 300=>"y"}

إذا لم يكن هناك مفتاح متشابه بالقيمة مع مفتاح آخر، فسيكون التابع ‎invert ذاتي الانعكاس (involutive):

h = { a: 1, b: 3, c: 4 }
h.invert.invert == h #=> true

الشرط هو ألا يوجد مفتاح بنفس القيمة، ويمكن اختباره بمقارنة حجم الكائن المعكوس مع حجم الكائن الأصلي:

# no key with the same value
h = { a: 1, b: 3, c: 4 }
h.size == h.invert.size #=> true

# two (or more) keys has the same value
h = { a: 1, b: 3, c: 1 }
h.size == h.invert.size #=> false

انظر أيضا

  • التابع keep_if: يبقي كل زوج قيمة-مفتاح يحقق شرطًا معيَّنًا من أزواج الكائن Hash المعطى.

مصادر