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

المعادلات لـ Ruby

دليل متقدم في Ruby

للمعادلات (، - * / % ** & | ^ << >> && ||) هناك عمليات تعيين مختصرة (+= -= إلخ).

عمليات الحساب في Ruby

افترض أن قيمة المتغير a هي 10، ومتغير b هو 20، فإن:

عنصرالوصف示例
+الجمع - جمع العددين الموجودين على الجانبين للعمودa + b سيكون 30
-الطرح - طرح العدد الأيسر من العدد الأيمنa - b سيكون -10
*الضرب - ضرب العددين الموجودين على الجانبين للعمودa * b سيكون 200
/القسمة - تقسيم العدد الأيسر بالعدد الأيمنb / a سيكون 2
%البقية - تقسيم العدد الأيسر بالعدد الأيمن، وإرجاع البقيةb % a سيكون 0
**الأس指数 - تنفيذ حساب الأس指数a**b سيكون 10 إلى السادس والعشرين

مقارنات Ruby

افترض أن قيمة المتغير 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.

عمليات الترجيح في Ruby

افترض أن قيمة المتغير 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 أيضًا الترجيح المتوازي للمتغيرات. مما يتيح للعديد من المتغيرات أن يتم تخصيصها في سطر برمجي Ruby واحد. على سبيل المثال:

a 		= 		10
b 		= 		20
c 		= 		30

يمكن استخدام الترجيح المتوازي لتحقيق إعلان أسرع:

a, 		b, 		c 		= 		10, 	20, 	30

استخدام الترجيح المتوازي مفيد جدًا أيضًا في تبادل قيم المتغيرين:

a, 		b 		= 		b, 	c

عمليات الترجيح في Ruby

تعمل عمليات الحساب الثنائية على الأرقام الثنائية، وتقوم بتنفيذ العمليات بشكل فردي.

افترض إذا كان 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 中,序列范围用于创建一系列连续的值 - 包含起始值、结束值(视情况而定)和它们之间的值。

在 Ruby 中,这些序列是使用 ".." 和 "..." 范围运算符来创建的。两点形式创建的范围包含起始值和结束值,三点形式创建的范围只包含起始值不包含结束值。

عنصرالوصف示例
..创建一个从开始点到结束点的范围(包含结束点)1..10 创建从 1 到 10 的范围
...创建一个从开始点到结束点的范围(不包含结束点)1...10 创建从 1 到 9 的范围

Ruby defined? 运算符

defined? 是一个特殊的运算符,以方法调用的形式来判断传递的表达式是否已定义。它返回表达式的描述字符串,如果表达式未定义则返回 nil.

下面是 defined? 运算符的各种用法:

用法 1

defined? variable # 如果 variable 已经初始化,则为 True

例如:

foo = 42
defined? foo    # => "local-variable"
defined? $_     # => "global-variable"
defined? bar    # => nil(未定义)

用法 2

defined? method_call # 如果方法已经定义,则为 True

例如:

defined? puts        # => "method"
defined? puts(bar)   # => nil(在这里 bar 未定义)
defined? unpack      # => nil(在这里未定义)

用法 3

# 如果存在可被 super 用户调用的方法,则为 True
defined? super

例如:

defined? super     # => "super"(如果可被调用)
defined? super     # => nil(如果不可被调用)

用法 4

defined? yield    # 如果已传递代码块,则为 True

例如:

defined? yield    # => "yield"(如果已传递块)
defined? yield    # => nil(如果没有传递块)

علامة النقطة "." وعملياتة المثنائية "::" في Ruby

يمكنك استدعاء الطريقة في الفئة أو الوحدة عن طريق إضافة اسم الفئة أو الوحدة و . إلى اسم الطريقة. يمكنك استخدام اسم الفئة أو الوحدة و :: لاستدعاء المحددات في الفئة أو الوحدة.

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

تذكر:في 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

أولوية عمليات Ruby

الجدول أدناه يعرض جميع العناصر من حيث ترتيب الأولوية من أعلى إلى أدنى.

الطريقةعنصرالوصف
هو::عنصر التفسير العمومي
هو[ ] [ ]=الإشارة إلى العنصر والجمعية من العناصر
هو**النسبة
هو! ~ + -السلبية والتعديل، وإضافة وإزالة مزدوجة (أسماء الطرق للثلاثة الأخيرة هي +@ و -@)
هو* / %ضرب والقسمة والباقي
هو+ -إضافة وطرح
هو>> > <تحريك اليمنة واليسرة
هو&والتناسب
هو^ |كسر والتناسب
هو<= < > >=مقارنة
هو<=> == === != =~ !~التفسير والتمثيل النمطي (لا يمكن تعريف != و !~ كطرق)

&&والمنطقي

||أو منطقي

.. ...النطاق (بما في ذلك، لا يتضمن)

? :ثلاثي if-then-else

= %= { /= -= += |= &= >>= <<= *= &&= ||= **=تعيين

defined?التحقق من أن الرمز المحدد تم تعريفه

لاالإنكار المنطقي

أو وأندالبنية النظرية

ملاحظة:في القائمة المميزة للمواضيع هو المعادلات في الواقع هي طرق، لذا يمكن تعديلها.