class
คือคีย์เวิร์ดที่ใช้กำหนดคลาสใหม่ เนื่องจากเป็นคำหลักที่สงวนไว้คุณจึงไม่สามารถใช้เป็นชื่อตัวแปรได้ คุณไม่สามารถใช้คำหลักใด ๆ ของรูบี้เป็นชื่อตัวแปรดังนั้นคุณจะไม่สามารถที่จะมีตัวแปรชื่อdef
หรือmodule
หรือif
หรือend
ฯลฯ - class
ไม่แตกต่างกัน
ตัวอย่างเช่นพิจารณาสิ่งต่อไปนี้:
def show_methods(class)
puts Object.const_get(class).methods.inspect
end
show_methods "Kernel"
การพยายามเรียกใช้ทำให้เกิดข้อผิดพลาดเนื่องจากคุณไม่สามารถใช้class
เป็นชื่อตัวแปรได้
test.rb:1: syntax error, unexpected kCLASS, expecting ')'
def show_methods(class)
^
test.rb:2: syntax error, unexpected ')'
puts Object.const_get(class).methods.inspect
ในการแก้ไขเราจะใช้ตัวระบุklass
แทน ไม่ใช่เรื่องพิเศษ แต่จะใช้เป็นชื่อตัวแปรตามอัตภาพเมื่อคุณจัดการกับคลาสหรือชื่อคลาส มันเหมือนกันการออกเสียง แต่เนื่องจากไม่ใช่คีย์เวิร์ดที่สงวนไว้ Ruby จึงไม่มีปัญหากับมัน
def show_methods(klass)
puts Object.const_get(klass).methods.inspect
end
show_methods "Kernel"
ผลลัพธ์ตามที่คาดไว้คือ
["method", "inspect", "name", "public_class_method", "chop!"...
คุณสามารถใช้ใด ๆ (ที่ไม่ใช่ลิขสิทธิ์) ชื่อตัวแปรมี klass
แต่ชุมชนได้นำตัวไปใช้ มันไม่มีเวทมนตร์พิเศษใด ๆ - แค่แปลว่า "ฉันต้องการใช้ชื่อ 'คลาส' ที่นี่ แต่ฉันทำไม่ได้เนื่องจากเป็นคีย์เวิร์ดที่สงวนไว้"
หมายเหตุด้านข้างเนื่องจากคุณพิมพ์ผิดไปสองสามครั้งจึงควรสังเกตว่าใน Ruby กรณีมีความสำคัญ โทเค็นที่ขึ้นต้นด้วยอักษรตัวใหญ่เป็นค่าคงที่ ผ่านPickaxe :
ชื่อคงเริ่มต้นด้วยอักษรตัวพิมพ์ใหญ่ตามด้วยอักขระชื่อ ชื่อคลาสและชื่อโมดูลเป็นค่าคงที่และเป็นไปตามหลักการตั้งชื่อคงที่ ตามแบบแผนโดยปกติตัวแปรคงที่จะสะกดโดยใช้ตัวพิมพ์ใหญ่และขีดล่างตลอด
ดังนั้นการสะกดคำที่ถูกต้องคือclass
และklass
มากกว่าและClass
Klass
ค่าหลังจะเป็นค่าคงที่และทั้งสองClass
และKlass
เป็นชื่อคงที่ที่ถูกต้อง แต่ฉันขอแนะนำให้ใช้เพื่อความชัดเจน