รูปแบบหนึ่งคือการใช้วิธีการของกลุ่มด้วยกันเพื่อที่คุณจะใช้private
และprotected
ครั้งเดียวต่อระดับที่มากที่สุด อีกลักษณะหนึ่งคือการระบุการมองเห็นทันทีหลังจากนิยามวิธีการ:
class Example
def my_private_method
end
private :my_private_method
def my_public_method
end
end
เมื่อ Ruby 2.1.0 def
ส่งคืนชื่อเมธอดเป็นสัญลักษณ์ดังนั้นรูปแบบที่คล่องตัวมากขึ้นจึงเป็นไปได้:
class Example
private def my_private_method
end
def my_public_method
end
protected def my_protected_method
end
private_class_method def self.my_private_class_method
end
end
(โปรดทราบว่าเราใช้private_class_method
สำหรับวิธีคลาส - มิฉะนั้นเราจะได้รับNameError: undefined method
ตั้งแต่นั้นมาprivate
คาดว่าจะมีวิธีการอินสแตนซ์แม้ว่าจะใช้เป็นมาโครเหมือนในตัวอย่างดั้งเดิม แต่ก็มีผลต่อการมองเห็นวิธีการอินสแตนซ์เท่านั้น)
ฉันชอบรูปแบบการมองเห็นแบบอินไลน์นี้ที่สุดเพราะช่วยให้คุณจัดระเบียบวิธีการต่างๆได้ตามที่คุณต้องการ ช่วยลดความเสี่ยงในการเพิ่มวิธีการใหม่ในที่ที่ไม่ถูกต้องและทำให้เป็นส่วนตัวโดยไม่ได้ตั้งใจ
สำหรับไวยากรณ์เมธอดคลาสคุณสามารถจัดการได้ด้วยวิธีนี้แทน:
class Example
private def my_private_method
end
class << self
private def my_private_class_method
end
end
end
private def my_method...end