الفرق بين المراجعتين ل"Ruby/Hash/invert"

من موسوعة حسوب
< Ruby‏ | Hash
اذهب إلى التنقل اذهب إلى البحث
(إنشاء الصفحة.)
 
(إضافة محتويات الصفحة.)
 
سطر 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

انظر أيضا

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

مصادر