التابع Hash.invert
في روبي
يعيد التابع 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