الفرق بين المراجعتين لصفحة: «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