Сеттери (setter) використовуються для забезпечення доступу до змінних об’єкта та дозволяють вам виконувати додаткову логіку при встановленні значень.
class Person
attr_reader :name
def initialize(name)
@name = name
end
def name=(new_name)
@name = new_name
end
end
person = Person.new("John")
puts person.name # Виведе "John"
person.name = "Jane"
puts person.name # Виведе "Jane"
class Car
attr_reader :model
def initialize(model)
@model = model
end
def model=(new_model)
if new_model.is_a?(String) && !new_model.empty?
@model = new_model
else
puts "Invalid model name"
end
end
end
car = Car.new("Toyota")
puts car.model # Виведе "Toyota"
car.model = "Honda"
puts car.model # Виведе "Honda"
car.model = "" # Виведе "Invalid model name"
class ShoppingCart
attr_reader :items
def initialize
@items = []
end
def add_item(item)
@items << item
end
def items=(new_items)
if new_items.is_a?(Array)
@items = new_items
else
puts "Invalid items format"
end
end
end
cart = ShoppingCart.new
cart.add_item("Product 1")
cart.add_item("Product 2")
puts cart.items.inspect # Виведе ["Product 1", "Product 2"]
cart.items = ["Product 3", "Product 4"]
puts cart.items.inspect # Виведе ["Product 3", "Product 4"]
cart.items = "Invalid" # Виведе "Invalid items format"