หนึ่งในสิ่งที่ยอดเยี่ยมเกี่ยวกับทับทิมคือคุณสามารถเรียกใช้เมธอดและเรียกใช้โค้ดในที่ ๆ ภาษาอื่น ๆ จะขมวดคิ้วเช่นในเมธอดหรือนิยามคลาส
ตัวอย่างเช่นในการสร้างคลาสที่มีซูเปอร์คลาสที่ไม่รู้จักจนกระทั่งถึงเวลาใช้งานนั่นคือสุ่มคุณสามารถทำสิ่งต่อไปนี้:
class RandomSubclass < [Array, Hash, String, Fixnum, Float, TrueClass].sample
end
RandomSubclass.superclass # could output one of 6 different classes.
สิ่งนี้ใช้ 1.9 Array#sample
วิธี (ใน 1.8.7-only, see Array#choice
) และตัวอย่างนั้นถูกออกแบบมาอย่างสวยงาม แต่คุณสามารถเห็นพลังได้ที่นี่
อีกตัวอย่างที่ยอดเยี่ยมคือความสามารถในการใส่ค่าพารามิเตอร์เริ่มต้นที่ไม่คงที่ (เช่นภาษาอื่นมักต้องการ):
def do_something_at(something, at = Time.now)
# ...
end
แน่นอนปัญหากับตัวอย่างแรกก็คือมันจะถูกประเมินตามเวลาที่กำหนดไม่ใช่เวลาโทร ดังนั้นเมื่อเลือกซูเปอร์คลาสแล้วจะยังคงเป็นซูเปอร์คลาสนั้นตลอดเวลาที่เหลือของโปรแกรม
อย่างไรก็ตามในตัวอย่างที่สองทุกครั้งที่คุณโทรหาdo_something_at
ที่at
ตัวแปรจะเป็นเวลาที่วิธีการที่เรียกว่า (ดีมากใกล้เคียงกับมัน)