English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
دليل متقدم في Ruby
للمعادلات (، - * / % ** & | ^ << >> && ||) هناك عمليات تعيين مختصرة (+= -= إلخ).
افترض أن قيمة المتغير a هي 10، ومتغير b هو 20، فإن:
عنصر | الوصف | 示例 |
---|---|---|
+ | الجمع - جمع العددين الموجودين على الجانبين للعمود | a + b سيكون 30 |
- | الطرح - طرح العدد الأيسر من العدد الأيمن | a - b سيكون -10 |
* | الضرب - ضرب العددين الموجودين على الجانبين للعمود | a * b سيكون 200 |
/ | القسمة - تقسيم العدد الأيسر بالعدد الأيمن | b / a سيكون 2 |
% | البقية - تقسيم العدد الأيسر بالعدد الأيمن، وإرجاع البقية | b % a سيكون 0 |
** | الأس指数 - تنفيذ حساب الأس指数 | a**b سيكون 10 إلى السادس والعشرين |
افترض أن قيمة المتغير a هي 10، ومتغير b هو 20، فإن:
عنصر | الوصف | 示例 |
---|---|---|
== | تحقق من أن قيمي العددين متساويتين، إذا كانت كذلك فإن الشروط صحيحة. | (a == b) لا يصح. |
!= | تحقق من أن قيمي العددين متساويتين، إذا لم تكن كذلك فإن الشروط صحيحة. | (a != b) صحيح. |
> | تحقق من قيمة العدد الأيسر إذا كانت أكبر من قيمة العدد الأيمن، إذا كانت كذلك فإن الشروط صحيحة. | (a > b) لا يصح. |
< | تحقق من قيمة العدد الأيسر إذا كانت أصغر من قيمة العدد الأيمن، إذا كانت كذلك فإن الشروط صحيحة. | (a < b) صحيح. |
>= | تحقق من قيمة العدد الأيسر إذا كانت أكبر أو تساوي قيمة العدد الأيمن، إذا كانت كذلك فإن الشروط صحيحة. | (a >= b) لا يصح. |
<= | تحقق من أن قيمة العمود الأيسر أقل أو تساوي قيمة العمود الأيمن، وإذا كان ذلك صحيحًا، فإن الشرط صحيح. | (a <= b) هو صحيح. |
<=> | عمليات الترجيح المتكاملة. إذا كان العمود الأول يساوي العمود الثاني، فإنه يعود 0، إذا كان العمود الأول أكبر من العمود الثاني، فإنه يعود 1، وإذا كان العمود الأول أصغر من العمود الثاني، فإنه يعود -1. | (a <=> b) يعود -1. |
=== | للاختبار case مقارنة متساوية داخل جملة when | (1...10) === 5 تعود true. |
.eql? | إذا كان المُستقبل والمتغيران لهما نفس النوع والقيمة، فإنه يعود true. | 1 == 1.0 تعود true، ولكن 1.eql?(1.0) تعود false. |
equal? | إذا كان المُستقبل والمتغيران لهما نفس id للموضوع، فإنه يعود true. | إذا كان aObj نسخة من bObj، فإن aObj == bObj تعود true،a.equal?bObj تعود false، ولكن a.equal?aObj تعود true. |
افترض أن قيمة المتغير a هي 10، ومتغير b هو 20، فإن:
عنصر | الوصف | 示例 |
---|---|---|
= | عمليات الترجيح البسيطة لتخصيص قيمة العمود الأيمن للعمود الأيسر | c = a + b سيزيد قيمة c بمقدار قيمة a + b |
+= | عمليات الترجيح الجبرية لتخصيص نتيجة إضافة العمود الأيمن إلى العمود الأيسر | c += a يساوي c = c + a |
-= | عمليات الترجيح الجبرية لتخصيص نتيجة طرح العمود الأيمن من العمود الأيسر | c -= a يساوي c = c - a |
*= | عمليات الترجيح الجبرية لتخصيص نتيجة ضرب العمود الأيمن بالعمود الأيسر | c *= a يساوي c = c * a |
/= | عمليات الترجيح الجبرية لتخصيص نتيجة تقسيم العمود الأيسر بالعمود الأيمن | c /= a يساوي c = c / a |
%= | عمليات الترجيح الجبرية للحصول على القيمة المتبقية وتخصيصها للعمود الأيسر | c %= a يساوي c = c % a |
**= | عمليات الترجيح الجبرية وتخصيص القيمة للعمود الأيسر | c **= a يساوي c = c ** a |
يدعم Ruby أيضًا الترجيح المتوازي للمتغيرات. مما يتيح للعديد من المتغيرات أن يتم تخصيصها في سطر برمجي Ruby واحد. على سبيل المثال:
a = 10 b = 20 c = 30
يمكن استخدام الترجيح المتوازي لتحقيق إعلان أسرع:
a, b, c = 10, 20, 30
استخدام الترجيح المتوازي مفيد جدًا أيضًا في تبادل قيم المتغيرين:
a, b = b, c
تعمل عمليات الحساب الثنائية على الأرقام الثنائية، وتقوم بتنفيذ العمليات بشكل فردي.
افترض إذا كان a = 60، وb = 13، الآن على شكل ثنائي، فإنها تبدو كالتالي:
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
في الجدول أدناه يُظهر عمليات الحساب الثنائية التي تدعمها روبية.
عنصر | الوصف | 示例 |
---|---|---|
& | إذا كانت موجودة في كلا العملياتين، فإن عمليات الحساب الثنائي والأو اللاهوائي تكرر سطرًا إلى النتيجة. | (a & b) سيكون 12، أي 0000 1100 |
| | إذا كانت موجودة في أي من العملياتين، فإن عمليات الحساب الثنائي أو تكرر سطرًا إلى النتيجة. | (a | b) سيكون 61، أي 0011 1101 |
^ | إذا كانت موجودة في أحد العملياتين ولكن لا تكون موجودة في كلاهما، فإن عمليات الحساب الثنائي للإشارة تكرر سطرًا إلى النتيجة. | (a ^ b) سيكون 49، أي 0011 0001 |
~ | عمليات الحساب الثنائية التعديلية هي عمليات الحساب الواحدة، ولديها تأثير "الانعكاس"، أي أن الصفر يصبح واحدًا، والواحد يصبح صفرًا. | (~a) سيكون -61، أي 1100 0011، وهو شكل التعديل الإضافي للعدد الثنائي المميز. |
<< | عمليات الحساب الثنائية اليسرى. يتم تحريك قيمة العمليات الأيسر إلى اليسار بناءً على عدد الأرقام المحددة. | a << 2 سيكون 240، أي 1111 0000 |
>> | عمليات الحساب الثنائية اليمنى. يتم تحريك قيمة العمليات الأيسر إلى اليمين بناءً على عدد الأرقام المحددة. | a >> 2 سيكون 15، أي 0000 1111 |
في الجدول أدناه يُظهر عمليات الحساب المنطقية التي تدعمها روبية.
افترض أن قيمة المتغير a هي 10، ومتغير b هو 20، فإن:
عنصر | الوصف | 示例 |
---|---|---|
and | يسمى بعمليات الحساب واللاهوائية. إذا كانت كلا العملياتين صحيحتان، فإن الحالة صحيحة. | (a and b) هو صحيح. |
or | يسمى بعمليات الحساب أو اللاهوائية. إذا كان أي من العملياتين غير صفر، فإن الحالة صحيحة. | (a or b) هو صحيح. |
&& | يسمى بعمليات الحساب واللاهوائية. إذا كانت كلا العملياتين غير صفر، فإن الحالة صحيحة. | (a && b) هو صحيح. |
|| | يسمى بعمليات الحساب أو اللاهوائية. إذا كان أي من العملياتين غير صفر، فإن الحالة صحيحة. | (a || b) هو صحيح. |
! | يسمى بعمليات الحساب اللاهوائية. تستخدم لتحويل حالة العمليات المنطقية. إذا كانت الحالة صحيحة، فإن عمليات الحساب اللاهوائية تجعلها خطأ. | !(a && b) هو خطأ. |
لا | يسمى بعمليات الحساب اللاهوائية. تستخدم لتحويل حالة العمليات المنطقية. إذا كانت الحالة صحيحة، فإن عمليات الحساب اللاهوائية تجعلها خطأ. | not(a && b) هو خطأ. |
هناك أكثر من عملية تُسمى عمليات الحساب الثلاثية. يحدد الأول قيمة الحقيقة أو الزيادة للتعبير، ثم يقرر تنفيذ إحدى الكلمتين التاليتين بناءً على النتيجة.
عنصر | الوصف | 示例 |
---|---|---|
? : | 条件表达式 | 如果条件为真 ? 则值为 X : 否则值为 Y |
在 Ruby 中,序列范围用于创建一系列连续的值 - 包含起始值、结束值(视情况而定)和它们之间的值。
在 Ruby 中,这些序列是使用 ".." 和 "..." 范围运算符来创建的。两点形式创建的范围包含起始值和结束值,三点形式创建的范围只包含起始值不包含结束值。
عنصر | الوصف | 示例 |
---|---|---|
.. | 创建一个从开始点到结束点的范围(包含结束点) | 1..10 创建从 1 到 10 的范围 |
... | 创建一个从开始点到结束点的范围(不包含结束点) | 1...10 创建从 1 到 9 的范围 |
defined? 是一个特殊的运算符,以方法调用的形式来判断传递的表达式是否已定义。它返回表达式的描述字符串,如果表达式未定义则返回 nil.
下面是 defined? 运算符的各种用法:
defined? variable # 如果 variable 已经初始化,则为 True
例如:
foo = 42 defined? foo # => "local-variable" defined? $_ # => "global-variable" defined? bar # => nil(未定义)
defined? method_call # 如果方法已经定义,则为 True
例如:
defined? puts # => "method" defined? puts(bar) # => nil(在这里 bar 未定义) defined? unpack # => nil(在这里未定义)
# 如果存在可被 super 用户调用的方法,则为 True defined? super
例如:
defined? super # => "super"(如果可被调用) defined? super # => nil(如果不可被调用)
defined? yield # 如果已传递代码块,则为 True
例如:
defined? yield # => "yield"(如果已传递块) defined? yield # => nil(如果没有传递块)
يمكنك استدعاء الطريقة في الفئة أو الوحدة عن طريق إضافة اسم الفئة أو الوحدة و . إلى اسم الطريقة. يمكنك استخدام اسم الفئة أو الوحدة و :: لاستدعاء المحددات في الفئة أو الوحدة.
:: هو عملياتة ثنائية، يسمح بتعريف المحددات والمثاليات والطرق الفئوية، يمكن الوصول إليها من أي مكان خارج الفئة أو الوحدة.
تذكر:في Ruby، يمكن أن تكون الفئات والطرق كمعادلات.
كل ما تحتاجه هو إضافة الاسم إلى اسم المحدد الموجود في التعبير. :: الاسم المسبق، يمكنه العودة إلى الكائن المناسب للفئة أو الوحدة.
إذا كان التعبير الذي يسبق :: هو اسم فئة أو وحدة، فإنه يعود إلى قيمة المحدد في تلك الفئة أو الوحدة؛ إذا لم يكن هناك تعبير مسبق قبل ::، فإنه يعود إلى قيمة المحدد في فئة Object الرئيسية. .
هناك مثالان:
MR_COUNT = 0 # تم تعريفه في فئة Object الرئيسية module Foo MR_COUNT = 0 ::MR_COUNT = 1 # ضبط العد العام إلى 1 MR_COUNT = 2 # ضبط العد المحلي إلى 2 end puts MR_COUNT # هذا هو المحدد العام puts Foo::MR_COUNT # هذا هو المحدد المحلي لـ "Foo"
المثال الثاني:
CONST = 'out there' class Inside_one CONST = proc {'in there'} def where_is_my_CONST ::CONST + 'inside one' end end class Inside_two CONST = 'inside two' def where_is_my_CONST CONST end end puts Inside_one.new.where_is_my_CONST puts Inside_two.new.where_is_my_CONST puts Object::CONST + Inside_two::CONST puts Inside_two::CONST + CONST puts Inside_one::CONST puts Inside_one::CONST.call + Inside_two::CONST
الجدول أدناه يعرض جميع العناصر من حيث ترتيب الأولوية من أعلى إلى أدنى.
الطريقة | عنصر | الوصف |
---|---|---|
هو | :: | عنصر التفسير العمومي |
هو | [ ] [ ]= | الإشارة إلى العنصر والجمعية من العناصر |
هو | ** | النسبة |
هو | ! ~ + - | السلبية والتعديل، وإضافة وإزالة مزدوجة (أسماء الطرق للثلاثة الأخيرة هي +@ و -@) |
هو | * / % | ضرب والقسمة والباقي |
هو | + - | إضافة وطرح |
هو | >> > < | تحريك اليمنة واليسرة |
هو | & | والتناسب |
هو | ^ | | كسر والتناسب |
هو | <= < > >= | مقارنة |
هو | <=> == === != =~ !~ | التفسير والتمثيل النمطي (لا يمكن تعريف != و !~ كطرق) |
&& | والمنطقي | |
|| | أو منطقي | |
.. ... | النطاق (بما في ذلك، لا يتضمن) | |
? : | ثلاثي if-then-else | |
= %= { /= -= += |= &= >>= <<= *= &&= ||= **= | تعيين | |
defined? | التحقق من أن الرمز المحدد تم تعريفه | |
لا | الإنكار المنطقي | |
أو وأند | البنية النظرية |
ملاحظة:في القائمة المميزة للمواضيع هو المعادلات في الواقع هي طرق، لذا يمكن تعديلها.