ฉันยังใหม่กับโลกทับทิมและฉันก็สับสนกับแนวคิดของ Symbols สัญลักษณ์และตัวแปรต่างกันอย่างไร ทำไมไม่ใช้แค่ตัวแปร?
ขอบคุณ
ฉันยังใหม่กับโลกทับทิมและฉันก็สับสนกับแนวคิดของ Symbols สัญลักษณ์และตัวแปรต่างกันอย่างไร ทำไมไม่ใช้แค่ตัวแปร?
ขอบคุณ
คำตอบ:
ตัวแปรและสัญลักษณ์ต่าง ๆ ตัวแปรชี้ไปยังข้อมูลประเภทต่างๆ ใน Ruby สัญลักษณ์เป็นเหมือนสตริงมากกว่าหนึ่งตัวแปร
ใน Ruby สตริงสามารถเปลี่ยนแปลงได้ในขณะที่สัญลักษณ์ไม่เปลี่ยนรูป นั่นหมายความว่าจะต้องสร้างสัญลักษณ์เพียงชุดเดียว ดังนั้นถ้าคุณมี
x = :my_str
y = :my_str
:my_str
จะถูกสร้างขึ้นเพียงครั้งเดียวและx
และy
ชี้ไปที่พื้นที่เดียวกันของหน่วยความจำ ในทางกลับกันถ้าคุณมี
x = "my_str"
y = "my_str"
สตริงที่มีmy_str
จะถูกสร้างขึ้นเป็นครั้งที่สองและx
และy
จะชี้ไปที่อินสแตนซ์ที่แตกต่างกัน
เป็นผลให้สัญลักษณ์มักจะถูกใช้เป็นสิ่งที่เทียบเท่ากับ enums ใน Ruby เช่นเดียวกับปุ่มในพจนานุกรม (แฮช)
#mySymbol
พวกเขาประพฤติกันในสมอลล์ทอล์คยกเว้นพวกเขามีลักษณะเหมือน
Symbol in Ruby นั้นเป็นสิ่งเดียวกับสัญลักษณ์ในโลกแห่งความเป็นจริง มันถูกใช้เพื่อแสดงหรือตั้งชื่อบางอย่าง
สัญลักษณ์มักใช้เพื่อแสดงสถานะบางอย่างเช่น
order.status = :canceled
order.status = :confirmed
นอกจากนี้คุณยังสามารถดูสัญลักษณ์ได้ทันที คุณไม่จำเป็นต้องกำหนดสัญลักษณ์คุณเพียงแค่ใช้มัน บทความนี้จะอธิบายในรายละเอียดที่ดี
โดยทั่วไปแล้วตัวแปรมักจะสับสนกับสายอักขระ แต่ฉันเข้าใจได้ว่าคุณคิดว่ามันเป็นตัวแปร มันเข้าใจได้ ลองวิธีนี้ดู:
สถานะของผู้เล่นในเกมนั้นมีจำนวน 1 หมายถึงชีวิต 2 หมายถึงไม่แน่ใจ 3 หมายถึงตาย สิ่งนี้สามารถแทนที่ด้วยสัญลักษณ์ได้อย่างง่ายดาย สัญลักษณ์ที่อาจจะเป็นและ:alive
:unsure
:dead
วิธีตรวจสอบว่าผู้เล่นยังมีชีวิตอยู่หรือไม่แทนที่จะทำสิ่งนี้:
if player_status == 1
คุณสามารถทำได้:
if player_status == :alive