Метод to_s
(to string) — один из фундаментальных методов в Ruby, предназначенный для преобразования объектов в строковое представление. Рассмотрим его ключевые аспекты.
5.to_s # => "5"
:hello.to_s # => "hello"
nil.to_s # => ""
name = :Alex
puts "Hello, #{name}" # автоматически вызывает name.to_s
Для любого объекта Ruby to_s
выводит:
class User; end
User.new.to_s # => "#<User:0x00007f8e2d12b1d0>"
class Product
attr_reader :name, :price
def initialize(name, price)
@name = name
@price = price
end
def to_s
"#{name} - $#{price}"
end
end
puts Product.new("Laptop", 999) # => "Laptop - $999"
to_s
: для пользовательского представленияinspect
: для отладки (содержит больше деталей)class Book
def to_s
"Book instance"
end
def inspect
"#<Book:0x123456 @title='Ruby'>"
end
end
book = Book.new
puts book # Использует to_s
p book # Использует inspect
"Count: " + 5.to_s # => "Count: 5"
puts [1, 2, 3] # вызывает to_s для массива
logger.info("User: #{current_user}") # использует to_s
Класс | Пример to_s |
---|---|
String | Возвращает себя |
Symbol | Преобразует в строку |
Integer | Строковое число |
Array | Все элементы через to_s |
Hash | Пары ключ-значение |
[1, :a, "b"].to_s # => "[1, a, b]"
{a: 1}.to_s # => "{:a=>1}"
to_s
для важных классовclass Address
attr_reader :street, :city, :zip
def to_s
[street, city, zip].compact.join(', ')
end
end
Метод to_s
в Ruby:
Правильная реализация to_s
делает:
Всегда учитывайте контекст, в котором будет использоваться строковое представление ваших объектов.