الفرق بين المراجعتين لصفحة: «Ruby/Hash/invert»
جميل-بيلوني (نقاش | مساهمات) إنشاء الصفحة. |
جميل-بيلوني (نقاش | مساهمات) إضافة محتويات الصفحة. |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Hash]] | [[تصنيف: Ruby Hash]] | ||
يعيد التابع <code>invert</code> | يعيد التابع <code>invert</code> كائن جديد من النوع <code>[[Ruby/Hash|Hash]]</code> يحوي قيم الكائن <code>[[Ruby/Hash|Hash]]</code> الذي استدعي معه كمفاتيح ومفاتيحه كقيم فيه. | ||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">invert → new_hash</syntaxhighlight> | <syntaxhighlight lang="ruby">invert → new_hash</syntaxhighlight> | ||
== | ==القيمة المعادة== | ||
يعاد كائن جديد من النوع <code>[[Ruby/Hash|Hash]]</code> تكون فيه قيم الكائن <code>[[Ruby/Hash|Hash]]</code> المعطى كمفاتيح ومفاتيحه كقيم فيه. | |||
==القيمة | == أمثلة == | ||
إذا وُجِد بالفعل مفتاح بنفس القيمة في الكائن <code>[[Ruby/Hash|Hash]]</code> المعطى، فسيستخدم التابع <code>invert</code> آخر واحد مُعرَّف، وستُتجاهل القيم التي تسبقه. انظر مثلًا إلى المثال التالي:<syntaxhighlight lang="ruby"> | |||
h = { "n" => 100, "m" => 100, "y" => 300, "d" => 200, "a" => 0 } | |||
h.invert #=> {0=>"a", 100=>"m", 200=>"d", 300=>"y"} | |||
</syntaxhighlight>إذا لم يكن هناك مفتاح متشابه بالقيمة مع مفتاح آخر، فسيكون التابع <code>invert</code> ذاتي الانعكاس (involutive):<syntaxhighlight lang="ruby"> | |||
h = { a: 1, b: 3, c: 4 } | |||
h.invert.invert == h #=> true | |||
</syntaxhighlight>الشرط هو ألا يوجد مفتاح بنفس القيمة، ويمكن اختباره بمقارنة حجم الكائن المعكوس مع حجم الكائن الأصلي:<syntaxhighlight lang="ruby"> | |||
# 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 | |||
</syntaxhighlight> | |||
==انظر أيضا== | ==انظر أيضا== | ||
* | * التابع <code>[[Ruby/Hash/keep if|keep_if]]</code>: يبقي كل زوج قيمة-مفتاح يحقق شرطًا معيَّنًا من أزواج الكائن <code>[[Ruby/Hash|Hash]]</code> المعطى. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Hash.html#method-i-invert قسم التابع invert في الصنف Hash في توثيق روبي الرسمي.] | *[http://ruby-doc.org/core-2.5.1/Hash.html#method-i-invert قسم التابع invert في الصنف Hash في توثيق روبي الرسمي.] |
المراجعة الحالية بتاريخ 15:30، 26 نوفمبر 2018
يعيد التابع 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