Symbols

แต่เดิม String ในภาษา C, C++ เป็น mutable พอมาใน Java และ C# กลายเป็น immutable พอมาถึง Ruby มันกลับมาเป็น mutable อีกครั้ง ถ้าจะเถียงกันเรื่อง mutable ดีหรือ immutable ดีกว่าคงเถียงกันไม่จบ ใน Ruby เลยมี String เป็น mutable และ Symbols เป็น immutable

เวลาประกาศ Symbol เราจะขึ้นต้นด้วย colon

:a_symbol
:an_other_symbol
:first_name

ชาว Ruby มักใช้มันตอนที่ต้องการแสดงความเป็นตัวชี้ (identifiers) เพราะแน่ใจว่า string ตัวนี้มีอยู่ใน memory แค่ที่เดียว ตัวอย่างการใช้งานเช่น

Food.eat(:all, :by => "hand", :on => "table")

หรือใช้ในคำสั่ง find ของ rails

Employee.find(:all, :conditions => 'name LIKE "Paul%"')

คุณ pphetra อธิบายเกี่ยวกับ Symbol ว่า
Symbol ถือเป็น object พิเศษแบบหนึ่ง นั่นคือ มันจะมีแค่ตัวเดียวเสมอ (ถ้าชื่อเหมือนกัน)
สมมติเราอ้างถึง :a ไป 10 ครั้งใน program
ก็จะมี object symbol :a เกิดขึ้นใน memory แค่ตัวเดียว
แต่ถ้าเราใช้ string ‘a’ 10 ครั้งใน program
ก็จะมี object string ‘a’ เกิดขึ้น 10 ตัวใน memory

แล้วถ้าผมมีโค้ดทำนองนี้ <%= f.text_field :comment%>

:comment แสดงว่าคืออะไรหรอครับ

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น