สัญลักษณ์เทียบกับสตริง
ควรใช้สัญลักษณ์เมื่อใด
สัญลักษณ์เทียบกับสตริง เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- สัญลักษณ์เทียบกับสตริง
- การสร้างและอ่านแฮช
- การวนซ้ำแฮช
- ค่าเริ่มต้นและการผสาน