Ruby Integer (), Array (), et al - co to jest? Skąd oni pochodzą?

Natychmiast natrafiłem na konwersje postaci Array (wartość), String (wartość) i Integer (wartość). Wydaje mi się, że są to tylko cukier syntaktyczny do wywołania odpowiednich wartości.to_a, wartości.do_s lub wartości.to_i.

Zastanawiam się:

Gdzie / jak są one zdefiniowane? Nie mogę ich znaleźć w obiekcie, module, klasie itpCzy są jakieś typowe scenariusze, dla których lepiej jest użyć tych, a nie odpowiedniej / bazowej metody do_X?

Czy można je wykorzystać w przymusie rodzajowym? Czy mogę zrobić coś na wzór

[Integer, String, Array].each {|klass| klass.do_generic_coercion(foo) }

? (... i nie, tak naprawdę nie chcę tego robić; znam typ, którego chcę, ale staram się unikać tego przypadku).

questionAnswers(4)

yourAnswerToTheQuestion