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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط (مراجعة وتدقيق.)
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>Symbol</code> في روبي}}</noinclude>
+
<noinclude>{{DISPLAYTITLE:الصنف <code>Symbol</code> في روبي}}</noinclude>
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
 +
[[تصنيف: Ruby Class]]
 
[[تصنيف: Ruby Symbol]]
 
[[تصنيف: Ruby Symbol]]
 
تمثل كائنات الصنف <code>Symbol</code> أسماء و<nowiki/>[[Ruby/String|سلاسل نصية]] داخل مترجم (interpreter) روبي. يمكن إنشاؤها باستخدام الصياغتين الحرفيتين ‎<code>:name</code> و ‎<code>:"string"‎</code>، أو بواسطة التوابع <code>[[Ruby/Symbol/to_sym|to_sym]]</code>.  
 
تمثل كائنات الصنف <code>Symbol</code> أسماء و<nowiki/>[[Ruby/String|سلاسل نصية]] داخل مترجم (interpreter) روبي. يمكن إنشاؤها باستخدام الصياغتين الحرفيتين ‎<code>:name</code> و ‎<code>:"string"‎</code>، أو بواسطة التوابع <code>[[Ruby/Symbol/to_sym|to_sym]]</code>.  
  
سيتم إنشاء نفس الرمز (كائن <code>Symbol)</code> لاسم أو [[Ruby/String|سلسلة نصية]] معينة طوال مدة تنفيذ البرنامج، بغض النظر عن السياق أو معنى هذا الاسم. وبالتالي، إن كان <code>Fred</code> ثابتًا في سياق معيّن، وتابعًا في سياق آخر، وصنفًا في سياق ثالث، فسيكون الرمز <code>Symbol</code> <code>:Fred</code> نفس الكائن في جميع السياقات الثلاث.
+
سيتم إنشاء نفس الرمز (نفس الكائن <code>Symbol</code>) لاسم أو [[Ruby/String|سلسلة نصية]] معينة طوال مدة تنفيذ البرنامج، بغض النظر عن السياق أو معنى هذا الاسم. وبالتالي، إن كان <code>Fred</code> ثابتًا في سياق معيّن، وتابعًا في سياق آخر، وصنفًا في سياق ثالث، فسيكون الرمز <code>Symbol :Fred</code> نفس الكائن في جميع السياقات الثلاث.
 
<syntaxhighlight lang="ruby">module One
 
<syntaxhighlight lang="ruby">module One
 
   class Fred
 
   class Fred
سطر 20: سطر 21:
 
$f2.object_id  #=> 2514190
 
$f2.object_id  #=> 2514190
 
$f3.object_id  #=> 2514190‎</syntaxhighlight>
 
$f3.object_id  #=> 2514190‎</syntaxhighlight>
==توابع الصنف العامة (Public Class Methods)==
+
==توابع الصنف العامة==
===[[Ruby/Symbol/all_symbols | التابع all_symbols]]===
+
===[[Ruby/Symbol/all_symbols |<code>all_symbols</code>]]===
يُعيد التابع <code>all_symbols</code> [[Ruby/Array|مصفوفة]] تضم جميع ال[[Ruby/Symbol|رموز]] الموجودة حاليًا في جدول رموز روبي.
+
يُعيد [[Ruby/Array|مصفوفة]] تضم جميع الرموز الموجودة حاليًا في جدول رموز روبي.
  
== توابع النسخ العامة (Public Instance Methods) ==
+
== توابع النسخ العامة ==
  
===[[Ruby/Symbol/compar_operator | التابع <=>]]===
+
===[[Ruby/Symbol/compar_operator |<code><=></code>]]===
معامل الموازنة.
+
يقارن بين رمزين ثم يعيد <code>‎-1</code> أو <code>0</code> أو ‎<code>+1</code> بناءً على ما إذا كان الرمز الأول أصغر من أو يساوي أو أكبر من الرمز الثاني.
===[[Ruby/Symbol/equality_operator | التابع ==]]===
+
===[[Ruby/Symbol/equality_operator |<code>==</code>]]===
معامل التساوي
+
يتحقق من تساوي رمزين أي إن كان هذان الرمزان هما نفس الرمز.
===[[Ruby/Symbol/case_equality | التابع ===]]===
+
===[[Ruby/Symbol/case_equality |<code>===</code>]]===
معامل تساوي الحالة.
+
يتحقق إن كان رمزان هما نفس الرمز.
===[[Ruby/Symbol/3D~ | التابع =~]]===
+
===[[Ruby/Symbol/3D~ |<code>~=</code>]]===
يعيد التابع <code>=~</code> ناتج التعبير <code>sym.to_s =~ obj</code>.
+
يعيد ناتج التعبير <code>sym.to_s =~ obj</code>.
===[[Ruby/Symbol/index_operator | التابع []]]===
+
===[[Ruby/Symbol/index_operator |<code>[]</code>]]===
يعيد التابع <code>[]</code> ناتج التعبير <code>sym.to_s[]‎</code>.
 
===[[Ruby/Symbol/capitalize | التابع capitalize]]===
 
التابع <code>capitalize</code> مشابه للتعبير <code>sym.to_s.capitalize.intern</code>.
 
===[[Ruby/Symbol/casecmp | التابع casecmp]]===
 
التابع <code>casecmp</code> هو نسخة غير حساسة لحالة الأحرف للمعامل <code>Symbol#<=>‎</code>.
 
===[[Ruby/Symbol/casecmp-3F | التابع casecmp?‎]]===
 
يُعيد <code>true</code> إن كان ال[[Ruby/Symbol|رمز]] <code>sym</code> و <code>other_symbol</code> متساويين بعد طي حالة اليونيكود (Unicode case folding)،
 
===[[Ruby/Symbol/downcase | التابع downcase]]===
 
التابع <code>downcase</code> مشابه للتعبير <code>sym.to_s.downcase.intern</code>.
 
===[[Ruby/Symbol/empty-3F | التابع empty?‎]]===
 
يتحقق التابع <code>empty?‎</code> مما إذا كان الرمز فارغا.
 
===[[Ruby/Symbol/encoding | التابع encoding]]===
 
يُعيد التابع <code>encoding</code> الترميز (<code>[[Ruby/Encoding|Encoding]]</code>) الذي يمثل ال[[Ruby/Symbol|رمز]] التي استُدعي معها.
 
===[[Ruby/Symbol/id2name | التابع id2name]]===
 
يعيد التابع <code>id2name</code> الاسم أو ال[[Ruby/String|سلسلة نصية]] التي تمثل ال[[Ruby/Symbol|رمز]]
 
===[[Ruby/Symbol/inspect | التابع inspect]]===
 
يعيد التابع <code>inspect</code> تمثيل ال[[Ruby/Symbol|رمز]] التي استُدعي معه.
 
===[[Ruby/Symbol/intern | التابع intern]]===
 
بشكل عام، يعيد <code>[[Ruby/Symbol/to_sym|to_sym]]</code> ال[[Ruby/Symbol|رمز]] <code>Symbol</code> المقابل لكائن ما.
 
===[[Ruby/Symbol/length | التابع length]]===
 
التابع <code>length</code> مشابه للتعبير <code>sym.to_s.length</code>.
 
===[[Ruby/Symbol/match | التابع match]]===
 
يعيد التابع <code>match</code> ناتج التعبير <code>sym.to_s.match</code>.
 
===[[Ruby/Symbol/match-3F | التابع match?‎]]===
 
يعيد التابع <code>match?‎</code> ناتج التعبير <code>sym.to_s.match?‎</code>.
 
===[[Ruby/Symbol/next | التابع next]]===
 
التابع <code>next</code> مشابه للتعبير <code>sym.to_s.succ.intern</code>.
 
===[[Ruby/Symbol/size | التابع size]]===
 
التابع <code>size</code> مشابه للتعبير <code>sym.to_s.length</code>.
 
===[[Ruby/Symbol/slice | التابع slice]]===
 
 
يعيد ناتج التعبير <code>sym.to_s[]‎</code>.
 
يعيد ناتج التعبير <code>sym.to_s[]‎</code>.
===[[Ruby/Symbol/succ | التابع succ]]===
+
===[[Ruby/Symbol/capitalize |<code>capitalize</code>]]===
التابع <code>succ</code> مشابه للتعبير <code>sym.to_s.succ.intern</code>.
+
يشبه التعبير <code>sym.to_s.capitalize.intern</code>.
===[[Ruby/Symbol/swapcase | التابع swapcase]]===
+
===[[Ruby/Symbol/casecmp |<code>casecmp</code>]]===
مشابه للتعبير <code>sym.to_s.swapcase.intern</code>.
+
يقارن بين رمزين بشكل غير حساس لحالة الأحرف.
===[[Ruby/Symbol/to_proc | التابع to_proc]]===
+
===[[Ruby/Symbol/casecmp-3F |<code>casecmp?‎</code>]]===
يعيد التابع <code>to_proc</code> كائنًا من النوع <code>Proc.</code>
+
يتحقق إن كان الرمز الذي استُدعي معه والرمز المُمرَّر إليه متساويين بشكل غير حساس لحالة الأحرف.
===[[Ruby/Symbol/to_s | التابع to_s]]===
+
===[[Ruby/Symbol/downcase |<code>downcase</code>]]===
يعيد التابع <code>to_s</code> الاسم أو ال[[Ruby/String|سلسلة نصية]] التي تمثل ال[[Ruby/Symbol|رمز]]
+
يشبه التعبير <code>sym.to_s.downcase.intern</code>.
===[[Ruby/Symbol/to_sym | التابع to_sym]]===
+
===[[Ruby/Symbol/empty-3F |<code>empty?‎</code>]]===
بشكل عام، يعيد التابع <code>to_sym</code> ال[[Ruby/Symbol|رمز]] <code>Symbol</code> المقابل لكائن.
+
يتحقق مما إذا كان الرمز فارغًا.
===[[Ruby/Symbol/upcase | التابع upcase]]===
+
===[[Ruby/Symbol/encoding |<code>encoding</code>]]===
التابع <code>upcase</code> مشابه للتعبير <code>sym.to_s.upcase.intern</code> .
+
يُعيد الترميز الذي يمثل الرمز التي استُدعي معه.
 +
===[[Ruby/Symbol/id2name |<code>id2name</code>]]===
 +
يعيد الاسم أو ال[[Ruby/String|سلسلة نصية]] التي تمثل الرمز.
 +
===[[Ruby/Symbol/inspect |<code>inspect</code>]]===
 +
يعيد تمثيلًا نصيًا للرمز التي استُدعي معه على هيئة رمز حرفي (symbol literal).
 +
===[[Ruby/Symbol/intern |<code>intern</code>]]===
 +
يعيد بشكل عام الرمز المقابل لكائن ما. لذلك، عند استدعائه مع رمز، فسيعيد الرمز نفسه.  
 +
===[[Ruby/Symbol/length |<code>length</code>]]===
 +
يشبه التعبير <code>sym.to_s.length</code>.
 +
===[[Ruby/Symbol/match |<code>match</code>]]===
 +
يعيد ناتج التعبير <code>sym.to_s.match</code>.
 +
===[[Ruby/Symbol/match-3F |<code>match?‎</code>]]===
 +
يعيد ناتج التعبير <code>sym.to_s.match?‎</code>.
 +
===[[Ruby/Symbol/next |<code>next</code>]]===
 +
يشبه التعبير <code>sym.to_s.succ.intern</code>.
 +
===[[Ruby/Symbol/size |<code>size</code>]]===
 +
يشبه التعبير <code>sym.to_s.length</code>.
 +
===[[Ruby/Symbol/slice |<code>slice</code>]]===
 +
يعيد ناتج التعبير <code>sym.to_s[]‎</code>.
 +
===[[Ruby/Symbol/succ |<code>succ</code>]]===
 +
يشبه التعبير <code>sym.to_s.succ.intern</code>.
 +
===[[Ruby/Symbol/swapcase |<code>swapcase</code>]]===
 +
يشبه التعبير <code>sym.to_s.swapcase.intern</code>.
 +
===[[Ruby/Symbol/to_proc |<code>to_proc</code>]]===
 +
يعيد كائنًا من النوع <nowiki/>[[Ruby/Proc|<code>Proc</code>،]] والذي يستجيب للتابع المعطى من قبل <nowiki/>[[Ruby/Symbol|الرمز]].
 +
===[[Ruby/Symbol/to_s |<code>to_s</code>]]===
 +
يعيد الاسم أو ال[[Ruby/String|سلسلة نصية]] التي تمثل الرمز.
 +
===[[Ruby/Symbol/to_sym |<code>to_sym</code>]]===
 +
يعيد بشكل عام الرمز المقابل لكائن. لذلك، عند استدعائه مع رمز، فسيعيد هذا الرمز نفسه (يعيد الكائن <code>self</code>).
 +
===[[Ruby/Symbol/upcase |<code>upcase</code>]]===
 +
يشبه التعبير <code>sym.to_s.upcase.intern</code>.
 
==مصادر==
 
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Symbol.html قسم  الصنف Symbol في توثيق روبي الرسمي.]
+
*[http://ruby-doc.org/core-2.5.1/Symbol.html صفحة الصنف Symbol في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 09:39، 5 ديسمبر 2018

تمثل كائنات الصنف Symbol أسماء وسلاسل نصية داخل مترجم (interpreter) روبي. يمكن إنشاؤها باستخدام الصياغتين الحرفيتين ‎:name و ‎:"string"‎، أو بواسطة التوابع to_sym.

سيتم إنشاء نفس الرمز (نفس الكائن Symbol) لاسم أو سلسلة نصية معينة طوال مدة تنفيذ البرنامج، بغض النظر عن السياق أو معنى هذا الاسم. وبالتالي، إن كان Fred ثابتًا في سياق معيّن، وتابعًا في سياق آخر، وصنفًا في سياق ثالث، فسيكون الرمز Symbol :Fred نفس الكائن في جميع السياقات الثلاث.

module One
  class Fred
  end
  $f1 = :Fred
end
module Two
  Fred = 1
  $f2 = :Fred
end
def Fred()
end
$f3 = :Fred
$f1.object_id   #=> 2514190
$f2.object_id   #=> 2514190
$f3.object_id   #=> 2514190‎

توابع الصنف العامة

all_symbols

يُعيد مصفوفة تضم جميع الرموز الموجودة حاليًا في جدول رموز روبي.

توابع النسخ العامة

<=>

يقارن بين رمزين ثم يعيد ‎-1 أو 0 أو ‎+1 بناءً على ما إذا كان الرمز الأول أصغر من أو يساوي أو أكبر من الرمز الثاني.

==

يتحقق من تساوي رمزين أي إن كان هذان الرمزان هما نفس الرمز.

===

يتحقق إن كان رمزان هما نفس الرمز.

~=

يعيد ناتج التعبير sym.to_s =~ obj.

[]

يعيد ناتج التعبير sym.to_s[]‎.

capitalize

يشبه التعبير sym.to_s.capitalize.intern.

casecmp

يقارن بين رمزين بشكل غير حساس لحالة الأحرف.

casecmp?‎

يتحقق إن كان الرمز الذي استُدعي معه والرمز المُمرَّر إليه متساويين بشكل غير حساس لحالة الأحرف.

downcase

يشبه التعبير sym.to_s.downcase.intern.

empty?‎

يتحقق مما إذا كان الرمز فارغًا.

encoding

يُعيد الترميز الذي يمثل الرمز التي استُدعي معه.

id2name

يعيد الاسم أو السلسلة نصية التي تمثل الرمز.

inspect

يعيد تمثيلًا نصيًا للرمز التي استُدعي معه على هيئة رمز حرفي (symbol literal).

intern

يعيد بشكل عام الرمز المقابل لكائن ما. لذلك، عند استدعائه مع رمز، فسيعيد الرمز نفسه.

length

يشبه التعبير sym.to_s.length.

match

يعيد ناتج التعبير sym.to_s.match.

match?‎

يعيد ناتج التعبير sym.to_s.match?‎.

next

يشبه التعبير sym.to_s.succ.intern.

size

يشبه التعبير sym.to_s.length.

slice

يعيد ناتج التعبير sym.to_s[]‎.

succ

يشبه التعبير sym.to_s.succ.intern.

swapcase

يشبه التعبير sym.to_s.swapcase.intern.

to_proc

يعيد كائنًا من النوع Proc، والذي يستجيب للتابع المعطى من قبل الرمز.

to_s

يعيد الاسم أو السلسلة نصية التي تمثل الرمز.

to_sym

يعيد بشكل عام الرمز المقابل لكائن. لذلك، عند استدعائه مع رمز، فسيعيد هذا الرمز نفسه (يعيد الكائن self).

upcase

يشبه التعبير sym.to_s.upcase.intern.

مصادر