Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ورقة Ruby المرجعية

آخر تحديث

Hello World وتشغيل الكود

Ruby لا تحتاج إلى أي قالب نمطي - سطر واحد يعمل.

العمليةالصياغة
الطباعة مع سطر جديدputs "Hello, World!"
الطباعة دون سطر جديدprint "Hello"
فحص قيمةp [1, 2, 3]
استيفاء السلاسل النصيةputs "Hi #{name}"
تعليق# this is a comment
تعليق متعدد الأسطر=begin ... =end
تشغيل ملفruby app.rb
صدفة تفاعليةirb

المتغيرات والأنواع

Ruby ذات أنواع ديناميكية؛ وكل شيء كائن.

العمليةالصياغة
متغير محليage = 30
ثابتPI = 3.14
متغير نسخة@name = "Ada"
متغير عام$count = 0
رمز (symbol):status
Nil / منطقيnil, true, false
فحص النوع42.class يُرجع Integer
تحويل النوع"42".to_i, 42.to_s, "3.5".to_f

السلاسل النصية

السلاسل النصية كائنات قابلة للتغيير بمجموعة دوال ثرية.

العمليةالصياغة
الطول"hello".length
الأحرف الكبيرة / الصغيرةs.upcase, s.downcase
إزالة المسافاتs.strip
الاستبدالs.gsub("a", "b")
التقسيم إلى مصفوفة"a,b,c".split(",")
يحتوي سلسلة فرعيةs.include?("ell")
تقطيع الأحرفs[0..2]
الدمج"foo" + "bar", s << "!"
التكرار"ab" * 3
التنسيقformat("%05d", 42)

المصفوفات

مجموعات مرتّبة ومفهرسة بالأعداد الصحيحة.

العمليةالصياغة
الإنشاءnums = [1, 2, 3]
الوصول بالفهرسnums[0], nums[-1]
الإضافة إلى النهايةnums.push(4), nums << 4
الإزالة من النهايةnums.pop
الطولnums.length
Mapnums.map { |n| n * 2 }
التصفيةnums.select { |n| n.even? }
الاختزالnums.reduce(0) { |sum, n| sum + n }
الترتيبnums.sort
الدمج في سلسلة نصيةnums.join(", ")

التجزئات (Hashes)

مجموعات مفتاح-قيمة، غالبًا مفتاحها رموز.

العمليةالصياغة
الإنشاءuser = { name: "Ada", age: 30 }
الوصول إلى قيمةuser[:name]
تعيين قيمةuser[:email] = "a@x.com"
فحص مفتاحuser.key?(:name)
حذف مفتاحuser.delete(:age)
المفاتيح / القيمuser.keys, user.values
التكرارuser.each { |k, v| puts "#{k}: #{v}" }
قيمة افتراضيةHash.new(0)
الدمجh1.merge(h2)

التحكم في التدفق

الشروط والحلقات؛ لاحظ المعدّلات اللاحقة في Ruby.

العمليةالصياغة
If / elsif / elseif x > 0 ... elsif x < 0 ... else ... end
if سطري (معدّل)puts "hi" if ready
Unlessunless done ... end
الشرطي الثلاثيx > 0 ? "pos" : "neg"
Case / whencase n; when 1 then ...; else ...; end
حلقة whilewhile i < 10 ... end
حلقة untiluntil done ... end
Times5.times { |i| puts i }
التكرار على نطاق(1..5).each { |i| puts i }
Break / nextbreak, next

الدوال

آخر تعبير يُرجَع ضمنيًا.

العمليةالصياغة
تعريف دالةdef add(a, b) ... end
إرجاع ضمنيdef square(x) x * x end
وسيط افتراضيdef greet(name = "World") ... end
وسائط مفتاحيةdef box(w:, h:) ... end
Splat (متغيرة الوسائط)def sum(*nums) ... end
دالة تنتهي بـ ?def valid? ... end
دالة تنتهي بـ !def normalize! ... end
النداء دون أقواسgreet "Ada"

الكتل و procs و lambdas

الكتل قطع من الكود تُمرَّر إلى الدوال؛ و procs و lambdas تخزّنها.

العمليةالصياغة
كتلة (أقواس معقوفة)[1, 2].each { |n| puts n }
كتلة (do/end)[1, 2].each do |n| puts n end
الاستسلام لكتلة (yield)def run; yield; end
فحص وجود كتلةblock_given?
التقاط الكتلة كمعاملdef run(&blk); blk.call; end
إنشاء procsquare = proc { |x| x * x }
إنشاء lambdasquare = ->(x) { x * x }
نداء proc / lambdasquare.call(3), square.(3)

الأصناف والوحدات

الأصناف تحمل الحالة والسلوك؛ والوحدات تمزج دوالًا مشتركة.

العمليةالصياغة
تعريف صنفclass Point ... end
باني (constructor)def initialize(x, y) @x = x; @y = y; end
دالة نسخةdef dist ... end
اختصارات الوصولattr_accessor :x, :y
إنشاء نسخةp = Point.new(1, 2)
الوراثةclass Circle < Shape ... end
دالة صنفdef self.origin ... end
تعريف وحدةmodule Drawable ... end
مزج وحدةinclude Drawable
نداء supersuper(args)

صياغة Ruby التي تستخدمها أكثر من غيرها، على صفحة واحدة. ورقة Ruby المرجعية هذه هي مرجع سريع للّغة الأساسية - المتغيرات والأنواع، والسلاسل النصية، والمصفوفات والتجزئات، والتحكم في التدفق، والدوال، والكتل و procs و lambdas التي تجعل Ruby معبّرة إلى هذا الحد.

كل ما هنا هو Ruby خالصة تعمل على أيّ مفسّر قياسي. انسخ ما تحتاجه، أو جرّب كل مقطع برمجي مباشرة في playground الخاص بـ Ruby - دون الحاجة إلى أي تثبيت.

الأسئلة الشائعة حول ورقة Ruby المرجعية

هل ورقة Ruby المرجعية هذه مجانية؟
نعم. ورقة Ruby المرجعية هذه مجانية تمامًا، دون الحاجة إلى التسجيل. أضِفها إلى المفضلة وارجع إليها متى احتجت إلى البحث عن دالة سلاسل نصية أو عملية تجزئة أو صياغة كتلة.
ما الفرق بين الكتلة و proc و lambda؟
الكتلة قطعة كود مجهولة الاسم تُمرَّر إلى دالة بـ { ... } أو do ... end - وهي ليست كائنًا بذاتها. أمّا proc فيغلّف كتلة في كائن قابل للنداء يمكنك تخزينه وتمريره. و lambda نوع خاص من proc يفحص عدد وسائطه بصرامة ويعامل return على أنه عودة من الـ lambda نفسها، بينما يعود proc العادي من الدالة المحيطة.
ما هي الرموز (symbols) في Ruby؟
الرمز مثل :name معرّف غير قابل للتغيير وقابل لإعادة الاستخدام. ولأن الرمز نفسه يشير دائمًا إلى الكائن نفسه في الذاكرة، فإن الرموز أسرع وأكثر كفاءةً في الذاكرة من السلاسل النصية لأمور مثل مفاتيح التجزئة وأسماء الدوال - ولهذا كثيرًا ما ترى التجزئات مكتوبةً بصيغة { name: "Ada" }.
هل يمكنني التدرّب على Ruby عبر الإنترنت؟
نعم. افتح playground الخاص بـ Ruby لتشغيل أيّ مقطع برمجي من هذه الورقة المرجعية في متصفحك - دون الحاجة إلى تثبيت Ruby. وعندما ترغب في تعلّم منظّم، تأخذك دورة Ruby التفاعلية المجانية من Coddy من المتغيرات والسلاسل النصية إلى الكتل والأصناف خطوة بخطوة.
هل هذه الورقة المرجعية مناسبة للمبتدئين؟
نعم. إنها مرتّبة من المواضيع الأكثر شيوعًا (المتغيرات والسلاسل النصية والتحكم في التدفق) وصولًا إلى المتقدمة (الكتل و procs والأصناف)، بحيث يمكنك استخدام الأقسام العلوية من اليوم الأول والتدرّج إلى البقية.
Coddy programming languages illustration

تعلّم Ruby مع Coddy

ابدأ الآن