0Pricing
Ruby Academy · درس

Symbols مقابل Strings

متى تستخدمون Symbols

Symbols مقابل Strings درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.

ما هو الرمز؟

الSymbol هو اسم خفيف الوزن وغير قابل للتغيير، ويُكتب بنقطتين في بدايته، مثل :name. وتُستخدم الرموز غالبًا بوصفها معرّفات ومفاتيح للهاش.

status = :active
puts status
puts status.class

الرموز غير قابلة للتغيير

على خلاف السلاسل النصية، لا يمكن تغيير الرموز. فبمجرد إنشاء :hello، يظل كما هو إلى الأبد.

puts :hello.frozen?
puts "hello".frozen?

الرمز نفسه هو الكائن نفسه

تشير كل استخدامات الرمز نفسه إلى كائن واحد مشترك في الذاكرة. أما سلسلتا نص متساويتان فغالبًا ما تكونان كائنين مختلفين.

puts :ruby.object_id == :ruby.object_id
puts "ruby".object_id == "ruby".object_id

لماذا توفّر الرموز الذاكرة؟

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

ids = [:a, :a, :a]
puts ids.map(&:object_id).uniq.length

التحويل بينهما

استخدموا to_sym لإنشاء رمز من سلسلة نصية، وto_s للتحويل في الاتجاه الآخر.

word = "color"
sym = word.to_sym
puts sym
puts sym.to_s.upcase

الرموز بوصفها مفاتيح للهاش

الرموز هي أكثر مفاتيح الهاش شيوعًا في Ruby، لأنها سريعة ولا تتغير أبدًا.

person = { name: "Ada", age: 36 }
puts person[:name]
puts person[:age]

الصيغة المختصرة

عندما تكون المفاتيح رموزًا، تكون name: "Ada" صيغة مختصرة لـ :name => "Ada". وينشئ التعبيران مفاتيح رمزية.

a = { color: "red" }
b = { :color => "red" }
puts a == b

الرموز في استدعاءات الطرق

تسمّي الرموز الطرق لأدوات مثل send وmap(&:method). وتحول الصيغة &:upcase الرمز إلى كتلة.

words = ["a", "b", "c"]
puts words.map(&:upcase).inspect

متى تستخدمون سلسلة نصية؟

استخدموا سلسلة نصية عندما تكون القيمة بيانات ستعرضونها أو تنشئونها أو تغيرونها، مثل الأسماء والرسائل ومحتوى الملفات. وتوفر السلاسل النصية طرقًا غنية لمعالجة النصوص.

greeting = "Hello"
greeting << ", world"
puts greeting

متى تستخدمون رمزًا؟

استخدموا رمزًا للمعرّفات الثابتة، مثل مفاتيح الهاش والحالات وأسماء الخيارات. فهي توضّح القصد ولا تتغير عرضيًا أبدًا.

def move(direction)
  puts "Moving #{direction}"
end
move(:north)

مقارنة الرموز والسلاسل النصية

الرمز والسلسلة النصية اللذان يحتويان على الأحرف نفسها غير متساويين. فهما من نوعين مختلفين.

puts :name == "name"
puts :name.to_s == "name"

فحص سريع

حددوا ما تعرفونه عن الرموز.

مراجعة

تعرفون الآن الفرق:

  • الرموز غير قابلة للتغيير، ومشتركة، ومثالية للمفاتيح والمعرّفات
  • السلاسل النصية قابلة للتغيير وتمثل بيانات نصية غنية
  • التحويل باستخدام to_sym وto_s
  • التعبير :a == "a" يعيد false

التالي: إنشاء الهاشات وقراءة قيمها.

config = { mode: :fast }
puts config[:mode]

الأسئلة الشائعة

هل درس «Symbols مقابل Strings» مجاني؟

نعم — نص درس «Symbols مقابل Strings» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.

ماذا ستتعلم في «Symbols مقابل Strings»؟

متى تستخدمون Symbols تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟

لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «Symbols مقابل Strings»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟

نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. Symbols مقابل Strings
  2. إنشاء Hashes وقراءتها
  3. التكرار على Hash
  4. القيم الافتراضية والدمج
← العودة إلى Ruby Academy