/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/ruby/ruby-511-102-023/main.rb
59 строк
1 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
class AdvancedAttributes # Базовые атрибуты attr_accessor :name, :age # Только для чтения attr_reader :created_at # Только для записи attr_writer :password # С валидацией def email=(value) if value =~ /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i @email = value else raise ArgumentError, "Неверный формат email" end end attr_reader :email # С преобразованием def tags=(value) @tags = value.is_a?(Array) ? value : value.split(',').map(&:strip) end attr_reader :tags # С кэшированием def expensive_calculation @expensive_calculation ||= begin sleep(1) # Имитация долгого вычисления rand(1000) end end def initialize(name, age) @name = name @age = age @created_at = Time.now end end obj = AdvancedAttributes.new("Test", 25) obj.name = "New Name" puts obj.name # New Name obj.email = "test@example.com" puts obj.email # test@example.com obj.tags = "ruby, programming, oop" puts obj.tags.inspect # ["ruby", "programming", "oop"] obj.tags = ["ruby", "rails"] puts obj.tags.inspect # ["ruby", "rails"] result1 = obj.expensive_calculation # Выполняется 1 секунду result2 = obj.expensive_calculation # Мгновенно, использует кэш puts result1 == result2 # true