1.12. Czy można potraktować dany obiekt jak łańcuch?

Problem

Czy dany obiekt przejawia elementy funkcjonalności charakterystyczne dla łańcuchów?

Rozwiązanie

Sprawdź, czy obiekt definiuje metodę to_str.

'To jest napis'.respond_to? :to_str          # => true
Exception.new.respond_to? :to_str            # => true
4.respond_to? :to_str                        # => false

Sformułowany powyżej problem możemy jednak rozważać w postaci bardziej ogólnej: czy mianowicie dany obiekt definiuje pewną konkretną metodę klasy String, z której to metody chcielibyśmy skorzystać. Oto przykład konkatenacji obiektu z jego następnikiem i konwersji wyniku do postaci łańcucha — to wszystko wykonalne jest jednak tylko wtedy, gdy obiekt definiuje metodę succ wyznaczającą następnik:

def join_to_successor(s) ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.