0Pricing
Ruby Academy · บทเรียน

สัญลักษณ์เทียบกับสตริง

ควรใช้สัญลักษณ์เมื่อใด

สัญลักษณ์เทียบกับสตริง เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

สัญลักษณ์คืออะไร

สัญลักษณ์ คือชื่อขนาดเล็กที่เปลี่ยนแปลงไม่ได้ เขียนโดยมีโคลอนนำหน้า เช่น :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" มีค่าเป็นเท็จ

ถัดไป: การสร้างและอ่านแฮช

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

คำถามที่พบบ่อย

บทเรียน “สัญลักษณ์เทียบกับสตริง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “สัญลักษณ์เทียบกับสตริง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “สัญลักษณ์เทียบกับสตริง”

ควรใช้สัญลักษณ์เมื่อใด คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “สัญลักษณ์เทียบกับสตริง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม

ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. สัญลักษณ์เทียบกับสตริง
  2. การสร้างและอ่านแฮช
  3. การวนซ้ำแฮช
  4. ค่าเริ่มต้นและการผสาน
← กลับไปที่ Ruby Academy