الفرق بين المراجعتين لصفحة: «Ruby/Symbol»

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>Symbol</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Symbolتمثل كائنات ال...'
 
ط مراجعة وتدقيق.
 
(مراجعتان متوسطتان بواسطة مستخدم واحد آخر غير معروضتين)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>Symbol</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE:الصنف <code>Symbol</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Symbol]]تمثل كائنات الصنف <code>Symbol</code> أسماء وبعض ال[[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> نفس الكائن في جميع السياقات الثلاث.
[[تصنيف: Ruby Class]]
[[تصنيف: 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>) لاسم أو [[Ruby/String|سلسلة نصية]] معينة طوال مدة تنفيذ البرنامج، بغض النظر عن السياق أو معنى هذا الاسم. وبالتالي، إن كان <code>Fred</code> ثابتًا في سياق معيّن، وتابعًا في سياق آخر، وصنفًا في سياق ثالث، فسيكون الرمز <code>Symbol :Fred</code> نفس الكائن في جميع السياقات الثلاث.
<syntaxhighlight lang="ruby">module One
<syntaxhighlight lang="ruby">module One
   class Fred
   class Fred
سطر 17: سطر 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|مصفوفة]] تضم جميع الرموز الموجودة حاليًا في جدول رموز روبي.
===[[Ruby/Symbol/compar_operator | التابع <=>]]===
 
يقارن التابع <code><=></code> بين <code>symbol</code> مع <code>other_symbol</code> بعد استدعاء <code>[[Ruby/Symbol/to_s|to_s]]</code> على كلا ال[[Ruby/Symbol|رمز]]. ثم يعيد 1 أو 0 أو +1 أو <code>nil</code> بناءً على ما إذا كان <code>symbol</code> أصغر من أو يساوي أو أكبر من <code>other_symbol</code>.
== توابع النسخ العامة ==
===[[Ruby/Symbol/equality_operator | التابع ==]]===
 
معامل التساوي - إن كان
===[[Ruby/Symbol/compar_operator |<code><=></code>]]===
===[[Ruby/Symbol/case_equality | التابع ===]]===
يقارن بين رمزين ثم يعيد <code>‎-1</code> أو <code>0</code> أو ‎<code>+1</code> بناءً على ما إذا كان الرمز الأول أصغر من أو يساوي أو أكبر من الرمز الثاني.
معامل التساوي - إن كان
===[[Ruby/Symbol/equality_operator |<code>==</code>]]===
===[[Ruby/Symbol/3D~ | التابع =~]]===
يتحقق من تساوي رمزين أي إن كان هذان الرمزان هما نفس الرمز.
يعيد التابع <code>=~</code> ناتج التعبير <code>sym.to_s =~ obj</code>.
===[[Ruby/Symbol/case_equality |<code>===</code>]]===
===[[Ruby/Symbol/index_operator | التابع []]]===
يتحقق إن كان رمزان هما نفس الرمز.
يعيد التابع <code>[]</code> ناتج التعبير <code>sym.to_s[]</code>.
===[[Ruby/Symbol/3D~ |<code>~=</code>]]===
===[[Ruby/Symbol/capitalize | التابع capitalize]]===
يعيد ناتج التعبير <code>sym.to_s =~ obj</code>.
التابع <code>capitalize</code> مشابه للتعبير <code>sym.to_s.capitalize.intern</code>.
===[[Ruby/Symbol/index_operator |<code>[]</code>]]===
===[[Ruby/Symbol/casecmp | التابع casecmp]]===
يعيد ناتج التعبير <code>sym.to_s[]</code>.
التابع <code>casecmp</code> هو نسخة غير حساسة لحالة الأحرف للمعامل <code>Symbol#<=></code>. في الوقت الحالي، لا تعمل الحساسية لحالة الأحرف إلا على الأحرف من A-Z/a-z، وليس على كل أحرف اليونيكود. هذا مختلف عن التابع <code>[[Ruby/Symbol/casecmp-3F|#casecmp?]]</code>.
===[[Ruby/Symbol/capitalize |<code>capitalize</code>]]===
===[[Ruby/Symbol/casecmp-3F | التابع casecmp?‎]]===
يشبه التعبير <code>sym.to_s.capitalize.intern</code>.
يُعيد <code>true</code> إن كان ال[[Ruby/Symbol|رمز]] (انظر فقرة البنية العامة) <code>sym</code> و <code>other_symbol</code> متساويين بعد طي حالة اليونيكود (Unicode case folding)، أو يعيد <code>false</code> إذا لم يكونا متساويين.
===[[Ruby/Symbol/casecmp |<code>casecmp</code>]]===
===[[Ruby/Symbol/downcase | التابع downcase]]===
يقارن بين رمزين بشكل غير حساس لحالة الأحرف.
التابع <code>downcase</code> مشابه للتعبير <code>sym.to_s.downcase.intern</code>X.
===[[Ruby/Symbol/casecmp-3F |<code>casecmp?‎</code>]]===
===[[Ruby/Symbol/empty-3F | التابع empty?‎]]===
يتحقق إن كان الرمز الذي استُدعي معه والرمز المُمرَّر إليه متساويين بشكل غير حساس لحالة الأحرف.
يتحقق التابع <code>empty?‎</code> مما إذا كان
===[[Ruby/Symbol/downcase |<code>downcase</code>]]===
===[[Ruby/Symbol/encoding | التابع encoding]]===
يشبه التعبير <code>sym.to_s.downcase.intern</code>.
يُعيد التابع <code>encoding</code> الترمزي (<code>[[Ruby/Encoding|Encoding]]</code>) الذي يمثل ترميز ال[[Ruby/Symbol|رمز]] التي استُدعي معها.
===[[Ruby/Symbol/empty-3F |<code>empty?‎</code>]]===
===[[Ruby/Symbol/id2name | التابع id2name]]===
يتحقق مما إذا كان الرمز فارغًا.
يعيد التابع <code>id2name</code> الاسم أو ال[[Ruby/String|سلسلة نصية]] التي تمثل ال[[Ruby/Symbol|رمز]]
===[[Ruby/Symbol/encoding |<code>encoding</code>]]===
===[[Ruby/Symbol/inspect | التابع inspect]]===
يُعيد الترميز الذي يمثل الرمز التي استُدعي معه.
يعيد التابع <code>inspect</code> تمثيل ال[[Ruby/Symbol|رمز]] التي استُدعي معها
===[[Ruby/Symbol/id2name |<code>id2name</code>]]===
===[[Ruby/Symbol/intern | التابع intern]]===
يعيد الاسم أو ال[[Ruby/String|سلسلة نصية]] التي تمثل الرمز.
بشكل عام، يعيد <code>[[Ruby/Symbol/to_sym|to_sym]]</code> ال[[Ruby/Symbol|رمز]] <code>Symbol</code> المقابل لكائن ما. ولما كان الكائن التي استُدعي معها [[Ruby/Symbol|رمز]]اـ
===[[Ruby/Symbol/inspect |<code>inspect</code>]]===
===[[Ruby/Symbol/length | التابع length]]===
يعيد تمثيلًا نصيًا للرمز التي استُدعي معه على هيئة رمز حرفي (symbol literal).
التابع <code>length</code> مشابه للتعبير <code>sym.to_s.length</code>X.
===[[Ruby/Symbol/intern |<code>intern</code>]]===
===[[Ruby/Symbol/match | التابع match]]===
يعيد بشكل عام الرمز المقابل لكائن ما. لذلك، عند استدعائه مع رمز، فسيعيد الرمز نفسه.
يعيد التابع <code>match</code> ناتج التعبير <code>sym.to_s.match</code>.
===[[Ruby/Symbol/length |<code>length</code>]]===
===[[Ruby/Symbol/match-3F | التابع match?‎]]===
يشبه التعبير <code>sym.to_s.length</code>.
يعيد التابع <code>match?‎</code> ناتج التعبير <code>sym.to_s.match?</code>.
===[[Ruby/Symbol/match |<code>match</code>]]===
===[[Ruby/Symbol/next | التابع next]]===
يعيد ناتج التعبير <code>sym.to_s.match</code>.
التابع <code>next</code> مشابه للتعبير <code>sym.to_s.succ.intern</code>X.
===[[Ruby/Symbol/match-3F |<code>match?‎</code>]]===
===[[Ruby/Symbol/size | التابع size]]===
يعيد ناتج التعبير <code>sym.to_s.match?</code>.
التابع <code>size</code> مشابه للتعبير <code>sym.to_s.length</code>X.
===[[Ruby/Symbol/next |<code>next</code>]]===
===[[Ruby/Symbol/slice | التابع slice]]===
يشبه التعبير <code>sym.to_s.succ.intern</code>.
يعيد ناتج التعبير <code>sym.to_s[]</code>.
===[[Ruby/Symbol/size |<code>size</code>]]===
===[[Ruby/Symbol/succ | التابع succ]]===
يشبه التعبير <code>sym.to_s.length</code>.
التابع <code>succ</code> مشابه للتعبير <code>sym.to_s.succ.intern</code>X.
===[[Ruby/Symbol/slice |<code>slice</code>]]===
===[[Ruby/Symbol/swapcase | التابع swapcase]]===
يعيد ناتج التعبير <code>sym.to_s[]</code>.
(انظر فقرة البنية العامة) مشابه للتعبير <code>sym.to_s.swapcase.intern</code>X.
===[[Ruby/Symbol/succ |<code>succ</code>]]===
===[[Ruby/Symbol/to_proc | التابع to_proc]]===
يشبه التعبير <code>sym.to_s.succ.intern</code>.
يعيد التابع <code>to_proc</code> كائن من النوع
===[[Ruby/Symbol/swapcase |<code>swapcase</code>]]===
===[[Ruby/Symbol/to_s | التابع to_s]]===
يشبه التعبير <code>sym.to_s.swapcase.intern</code>.
يعيد التابع <code>to_s</code> الاسم أو ال[[Ruby/String|سلسلة نصية]] التي تمثل ال[[Ruby/Symbol|رمز]]
===[[Ruby/Symbol/to_proc |<code>to_proc</code>]]===
===[[Ruby/Symbol/to_sym | التابع to_sym]]===
يعيد كائنًا من النوع <nowiki/>[[Ruby/Proc|<code>Proc</code>،]] والذي يستجيب للتابع المعطى من قبل <nowiki/>[[Ruby/Symbol|الرمز]].
بشكل عام، يعيد التابع <code>to_sym</code> ال[[Ruby/Symbol|رمز]] <code>Symbol</code> المقابل لكائن. ولم كان
===[[Ruby/Symbol/to_s |<code>to_s</code>]]===
===[[Ruby/Symbol/upcase | التابع upcase]]===
يعيد الاسم أو ال[[Ruby/String|سلسلة نصية]] التي تمثل الرمز.
التابع <code>upcase</code> مشابه للتعبير <code>sym.to_s.upcase.intern</code>X.
===[[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.

مصادر