English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل Ruby الأساسي

دليل Ruby المتقدم

الخوارزميات في Ruby (Hash)

هش (Hash) هو مجموعة من القيم مرتبطة بالأعمدة (أو ما يُدعى "المفاتيح"). يشبه الهش (Hash) مجموعة، ولكن لا يقتصر على استخدام الأرقام كمراجع.

يمكن أن تكون أيضًا أي عنصر من الأشياء.

يختلف هش (Hash) عن المجموعات لأن عناصره ليست مرتبة بشكل محدد. إذا كانت الترتيب مهمًا، فعليك استخدام مجموعة.

إنشاء هش (Hash)

مثل المجموعات، هناك العديد من الطرق لإنشاء هش (Hash). يمكنك إنشائه من خلال new يوجد العديد من الطرق لإنشاء هش (Hash) فارغ باستخدام طريقة دالة منفصلة:

months = Hash.new

يمكنك أيضًا استخدام new إنشاء مفسر مع القيمة الافتراضية، المفسر بدون القيمة الافتراضية هو}} nil:

months = Hash.new("month")
 
أو
 
months = Hash.new "month"

عندما تزور أي مفتاح في المفسر مع القيمة الافتراضية، إذا لم يتم العثور على المفتاح أو القيمة، فإن الوصول إلى المفسر يعود بقيمة افتراضية:

مثال على الإنترنت

#!/usr/bin/ruby
 
months = Hash.new("month")
 
puts "#{months[0]}"
puts "#{months[72]}"

نتائج الإدخال أعلاه هي:

month
month

مثال على الإنترنت

#!/usr/bin/ruby
 
H = Hash["a" => 100, "b" => 200]
 
puts "#{H['a']}"
puts "#{H['b']}"

نتائج الإدخال أعلاه هي:

100
200

يمكنك استخدام أي Object Ruby كمفتاح أو قيمة، حتى يمكنك استخدام قائمة، مثل المثال التالي:

[1, "jan"] => "January"

الطرق المدمجة للمفسر

إذا كنت بحاجة إلى استدعاء طريقة Hash، فيجب أولاً تعيين Object Hash. إليك بعض الطرق لإنشاء Object Hash:

Hash[[key =>|, value]*] [or]
 
Hash.new [or] Hash.new(obj) [or]
 
Hash.new { |hash, key| block }

سيكون هذا يعود بمفسر جديد تم تعبئته باستخدام العنصر المحدد. الآن، باستخدام العنصر المحدد، يمكننا استدعاء أي طريقة متاحة. على سبيل المثال:

مثال على الإنترنت

#!/usr/bin/ruby
 
$, = ", "
months = Hash.new("month")
 
months = {"1" => "January", "2" => "February"}
 
keys = months.keys
 
puts "#{keys}"

نتائج الإدخال أعلاه هي:

["1", "2"]

إليك بعض الطرق العامة للمفسر (افتراضًا،) الخوارزمية هو Object Hash):

الترتيبالطريقة & الوصف
1hash == other_hash
فحص ما إذا كان لديه نفس عدد المفاتيح القيم، وما إذا كانت المفاتيح القيم تتطابق مع بعضها البعض، لتحديد ما إذا كان المفسران متطابقين.
2hash[key]
استخدام المفتاح، استدعاء القيمة من المفسر. إذا لم يتم العثور على المفتاح، فإنها تعود بقيمة افتراضية.
3hash[key]=value
تحويل القيمة القيمة المحددة مع المفتاح رابط المفتاح المحدد.
4hash.clear
إزالة جميع المفاتيح القيم من المفسر.
5hash.default(key = nil)
يعيد الخوارزمية الافتراضية، إذا لم يتم ضبطها باستخدام default=، فإنها تعود بلا شيء。(إذا كان المفتاح موجوداً في الخوارزمية لا يتضمن، فإن [] يعود بقيمة افتراضية.)
6hash.default = obj
من الخوارزمية يُحدد القيمة الافتراضية.
7hash.default_proc
إذا الخوارزمية يتم العودة إلى block الذي تم إنشاؤه من خلال block.
8hash.delete(key) [أو]
array.delete(key) { |key| block }

من خلال المفتاح من الخوارزمية من خلال إزالة زوجات المفاتيح القيم. إذا تم استخدام block ولم يتم العثور على زوجات المفاتيح القيم الم匹配ة، يتم العودة إلى نتيجة block. يتم مقارنتها مع delete_if للتحقق من
9hash.delete_if { |key,value| block }
block هو صحيح من كل الخوارزمية من خلال إزالة زوجات المفاتيح القيم.
10hash.each { |key,value| block }
مرور الخوارزمية، بالنسبة لكل المفتاح يتم استدعاء block مرة واحدة، يتم نقل مفتاح القيمة كعدد بيانات بيانيتين.
11hash.each_key { |key| block }
مرور الخوارزمية، بالنسبة لكل المفتاح يتم استدعاء block مرة واحدة، يتم نقل المفتاح كمعلمات.
12hash.each_key { |key_value_array| block }
مرور الخوارزمية، بالنسبة لكل المفتاح يتم استدعاء block مرة واحدة، يتم نقل المفتاح و القيمة كمعلمات.
13hash.each_value { |value| block }
مرور الخوارزمية، بالنسبة لكل المفتاح يتم استدعاء block مرة واحدة، يتم نقل القيمة كمعلمات.
14hash.empty?
يحقق ما إذا كان الفاتح فارغًا (لا يحتوي على زوجات المفاتيح القيم)، يتم العودة صحيح أو false.
15hash.fetch(key [, default] ) [أو]
hash.fetch(key) { | key | block }

من خلال المفتاح من الخوارزمية القيمة العودة. إذا لم يتم العثور على المفتاح، ولا تم تقديم أي معلمات أخرى، يتم رمي IndexError استثنائية؛ إذا تم تقديم default، يتم العودة default؛ إذا تم تحديد block الإضافي، يتم العودة إلى نتيجة block.
16hash.has_key?(key) [أو] hash.include?(key) [أو]
hash.key?(key) [أو] hash.member?(key)

يحقق ما إذا كان يحتوي على المفتاح هل يوجد في الفاتح، يتم العودة صحيح أو false.
17hash.has_value?(value)
يحقق ما إذا كان يحتوي على الفاتح المحدد القيمة.
18hash.index(value)
بالنسبة للفاتح المحدد القيمة يعيد القيمة من المفتاح، إذا لم يتم العثور على القيمة الم匹配ة، يتم العودة nil.
19hash.indexes(keys)
يعيد مجموعة جديدة مكونة من القيم المحددة للفاتح المحدد. إذا لم يتم العثور على الفاتح، يتم إدراج القيمة الافتراضية. تم إزالة هذه الطريقة، يرجى استخدام select.
20hash.indices(keys)
يعيد مجموعة جديدة مكونة من القيم المحددة للفاتح المحدد. إذا لم يتم العثور على الفاتح، يتم إدراج القيمة الافتراضية. تم إزالة هذه الطريقة، يرجى استخدام select.
2121
hash.inspect
إعادة التبديل إلى نسخة نسخة من المفتاح-القيمة.22
hash.invert الخوارزميةإنشاء مصفوفة جديدة الخوارزمية عكس المفاتيح و القيمذلك، في المفتاح-القيمة الجديد،الخوارزمية المفاتيح ستصبح القيم، والقيم ستصبح المفاتيح.
23hash.keys
إنشاء مصفوفة جديدة تحتوي على الخوارزمية المفاتيح.
24hash.length
إعادة التبديل بشكل عددية الخوارزمية الحجم أو الطول.
25hash.merge(other_hash) [أو]
hash.merge(other_hash) { |key, oldval, newval| block }

يعيد دالة جديدة تحتوي على الخوارزمية و other_hash المحتوى، وإعادة كتابة hash مع other_hash القيم الموجودة تحت المفتاح المكرر.
26hash.merge!(other_hash) [أو]
hash.merge!(other_hash) { |key, oldval, newval| block }

مثل merge، ولكن في الواقع يحدث تغيير في hash.
27hash.rehash
بناءً على كل المفتاح إعادة الترتيب للقيمة الحالية الخوارزمية. إذا تغيرت القيمة بعد الإدراج، فإن هذا الأسلوب سيقوم بإعادة الترتيب. الخوارزمية.
28hash.reject { |key, value| block }
مثل delete_if، ولكن يطبق على نسخة من المفتاح-القيمة. يتم التبديل إلى hsh.dup.delete_if.
29hash.reject! { |key, value| block }
مثل delete_if، ولكن إذا لم يتم التعديل، يتم إعادة التبديل إلى nil.
30hash.replace(other_hash)
تحويل الخوارزمية المحتوى إلى other_hash المحتوى.
31hash.select { |key, value| block }
إعادة التبديل إلى مصفوفة جديدة تحتوي على الكائنات المكونة منها. الكتلة يعيد صحيح من الخوارزمية مكونة من الكائنات المفتاح-القيمة.
32hash.shift
من الخوارزمية إزالة كائن مفتاح-قيمة من بينها، وإعادة التبديل إلى مصفوفة من عناصرين.
33hash.size
إعادة التبديل بشكل عددية الخوارزمية من الحجم أو طول.
34hash.sort
تحويل الخوارزمية تحويل إلى مصفوفة ثنائية تحتوي على مصفوفات من الكائنات المفتاح-القيمة، ثم ترتيبها.
35hash.store(key, value)
تخزين الخوارزمية من بين الكائنات المفتاح-القيمة.
36hash.to_a
من إنشاء مصفوفة ثنائية من الـ hash. يتم تحويل كل كائن إلى زوج مفتاح-قيمة إلى مصفوفة، ويتم تخزين جميع هذه المصفوفات في مصفوفة واحدة.
37hash.to_hash
يعيد الخوارزمية(self).
38hash.to_s
تحويل الخوارزمية تحويلها إلى مصفوفة، ثم تحويل هذه المصفوفة إلى نص.
39hash.update(other_hash) [أو]
hash.update(other_hash) {|key, oldval, newval| block}

يعيد دالة جديدة تحتوي على الخوارزمية و other_hash المحتوى، وإعادة كتابته الخوارزمية الموجودة تحت other_hash القيم الموجودة تحت المفتاح المكرر.
40hash.value?(value)
التحقق الخوارزمية هل تحتوي على القيمة المحددة القيمة.
41القيم الخاصة بـ hash.values
يعيد دالة جديدة تحتوي على الخوارزمية جميع القيم.
42القيم الخاصة بـ hash.values_at(obj, ...)
يعيد دالة جديدة تحتوي على الخوارزمية القيمة الموجودة تحت المفتاح المحدد.