J'ai rencontré ce problème lors d'un test en ligne. J'ai cette classe :
class DocumentStore
def initialize(capacity)
@capacity = capacity;
@documents = []
end
def get_documents
return @documents
end
def add_document(document)
raise 'Le stockage de documents est plein' if @documents.length >= @capacity
@documents.push(document)
end
def inspect
return "Stockage de documents : #{@documents.length}/#{@capacity}"
end
end
Je veux renvoyer les données du stockage via get_documents
, et empêcher l'utilisateur de les modifier/affecter via l'objet renvoyé, par exemple,
ds = DocumentStore.new(3)
ds.add_document("Doc1")
docs = ds.get_documents
docs.push("Doc2")
puts ds.inspect # cela devrait simplement imprimer ["Doc1"]