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

من موسوعة حسوب
< Ruby‏ | Hash
اذهب إلى التنقل اذهب إلى البحث
(إنشاء الصفحة.)
 
(إضافة شرح)
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Hash]]
 
[[تصنيف: Ruby Hash]]
يعيد التابع <code>new</code> ت
+
ينشئ التابع <code>new</code> جدول <code>[[Ruby/Hash|Hash]]</code> جديد فارغ ثم يعيده. إذا أجريت بعد ذلك محاولة للوصول إلى مفتاح غير موجود وغير مرتبط بقيمة، فستعاد قيمة تعتمد على كيفية استدعاء التابع <code>new</code> لإنشاء الجدول <code>[[Ruby/Hash|Hash]]</code> هذا.
==البنية العامة==
+
 
 +
== البنية العامة ==
 
<syntaxhighlight lang="ruby">new → new_hash
 
<syntaxhighlight lang="ruby">new → new_hash
 
new(obj) → new_hash
 
new(obj) → new_hash
new {|hash, key| block } → new_hash</syntaxhighlight>
+
new {|hash, key| block } → new_hash</syntaxhighlight>في الشكل الأول من التابع <code>new</code>، تعيد أية محاولة للوصول إلى مفتاحٍ القيمة <code>nil</code>. إذا أعطي المعامل <code>obj</code> في الشكل الثاني، فستُستخدم قيمته وحدها كقيمة افتراضية لكافة القيم. أمَّا إذا حُدِدت كتلة كما فيا الشكل الثالث، فستُستدعى مع الكائن [[Ruby/Hash|<code>Hash</code>]] المُنشَأ آنذاك والمفتاح الذي أجريت محاول للوصول إليه، ويجب أن تعيد القيمة الافتراضية. ومن مسؤولية الكتلة أيضًا تخزين القيمة في الجدول <code>[[Ruby/Hash|Hash]]</code> إذا لزم الأمر.
 +
 
 
==المعاملات==
 
==المعاملات==
 +
 +
=== <code>obj</code> ===
 +
الكائن المراد تعيينه كقيمة افتراضية.
  
 
==القيمة المعادة==
 
==القيمة المعادة==
تعاد
+
يعاد كائن جديد فارغ من النوع <code>[[Ruby/Hash|Hash]]</code>.
  
 +
== أمثلة ==
 +
مثال على استعمال التابع <code>new</code>:<syntaxhighlight lang="ruby">
 +
h = Hash.new("Go Fish")
 +
h["a"] = 100
 +
h["b"] = 200
 +
h["a"]          #=> 100
 +
h["c"]          #=> "Go Fish"
 +
# تعيد الاستدعاءات التالية القيمة الافتراضية المحددة
 +
h["c"].upcase!  #=> "GO FISH"
 +
h["d"]          #=> "GO FISH"
 +
h.keys          #=> ["a", "b"]
 +
 +
# بينما تنشئ الاستدعاء التالية قيمة افتراضية في كل مرة
 +
h = Hash.new { |hash, key| hash[key] = "Go Fish: #{key}" }
 +
h["c"]          #=> "Go Fish: c"
 +
h["c"].upcase!  #=> "GO FISH: C"
 +
h["d"]          #=> "Go Fish: d"
 +
h.keys          #=> ["c", "d"]
 +
</syntaxhighlight>
 
==انظر أيضا==
 
==انظر أيضا==
 +
* المعامل <code>[[Ruby/Hash/index|[]]]</code>: ينشئ جدول <code>[[Ruby/Hash|Hash]]</code> جديد ويضع فيه الكائنات المعطاة.
 +
* التابع <code>[[Ruby/Hash/try convert|try_convert]]</code>: يحاول تحويل الكائن المُمرَّر إليه إلى النوع <code>[[Ruby/Hash|Hash]]</code> باستخدام التابع <code>[[Ruby/Hash/to hash|to_hash]]</code>.
 +
 
*  
 
*  
  
 
==مصادر==
 
==مصادر==
 
*[http://ruby-doc.org/core-2.5.1/Hash.html#method-c-new قسم التابع new في الصنف Hash في توثيق روبي الرسمي.]
 
*[http://ruby-doc.org/core-2.5.1/Hash.html#method-c-new قسم التابع new في الصنف Hash في توثيق روبي الرسمي.]

مراجعة 07:39، 26 نوفمبر 2018

ينشئ التابع new جدول Hash جديد فارغ ثم يعيده. إذا أجريت بعد ذلك محاولة للوصول إلى مفتاح غير موجود وغير مرتبط بقيمة، فستعاد قيمة تعتمد على كيفية استدعاء التابع new لإنشاء الجدول Hash هذا.

البنية العامة

new  new_hash
new(obj)  new_hash
new {|hash, key| block }  new_hash

في الشكل الأول من التابع new، تعيد أية محاولة للوصول إلى مفتاحٍ القيمة nil. إذا أعطي المعامل obj في الشكل الثاني، فستُستخدم قيمته وحدها كقيمة افتراضية لكافة القيم. أمَّا إذا حُدِدت كتلة كما فيا الشكل الثالث، فستُستدعى مع الكائن Hash المُنشَأ آنذاك والمفتاح الذي أجريت محاول للوصول إليه، ويجب أن تعيد القيمة الافتراضية. ومن مسؤولية الكتلة أيضًا تخزين القيمة في الجدول Hash إذا لزم الأمر.

المعاملات

obj

الكائن المراد تعيينه كقيمة افتراضية.

القيمة المعادة

يعاد كائن جديد فارغ من النوع Hash.

أمثلة

مثال على استعمال التابع new:

h = Hash.new("Go Fish")
h["a"] = 100
h["b"] = 200
h["a"]           #=> 100
h["c"]           #=> "Go Fish"
# تعيد الاستدعاءات التالية القيمة الافتراضية المحددة
h["c"].upcase!   #=> "GO FISH"
h["d"]           #=> "GO FISH"
h.keys           #=> ["a", "b"]

# بينما تنشئ الاستدعاء التالية قيمة افتراضية في كل مرة
h = Hash.new { |hash, key| hash[key] = "Go Fish: #{key}" }
h["c"]           #=> "Go Fish: c"
h["c"].upcase!   #=> "GO FISH: C"
h["d"]           #=> "Go Fish: d"
h.keys           #=> ["c", "d"]

انظر أيضا

  • المعامل []: ينشئ جدول Hash جديد ويضع فيه الكائنات المعطاة.
  • التابع try_convert: يحاول تحويل الكائن المُمرَّر إليه إلى النوع Hash باستخدام التابع to_hash.

مصادر