2015-09-07 32 views
0

我正在製作一個基於Ruby的GUI應用程序。它包括只有一個類:在Ruby和Shoes中保存和加載對象數組到磁盤

class Note 
    attr_reader :text, :title, :color 
    def initialize(text,title,color) 
    @text = text 
    @title = title 
    @color = color 
    end 
end 

而且,類型注對象的數組

notes = [] OR notes = Array.new 

我打算做的,是保存和加載該陣列磁盤。請幫忙。我打算在不涉及背景細節的情況下做到這一點。
元帥是有用的,但與類一起使用似乎令人頭疼。

請幫

+1

你不會找到比元帥更簡單的解決方案。除此之外,你正在看YAML,或者像Sequel或Mongoid這樣的ORM。 –

+0

但編組類是一個工作,你必須在類中定義'marshal_dump'和'marshal_load'方法,顯式地首先將每個對象轉換成一個數組,然後從被加載的數組中提取實例變量。 我一直在尋找一些簡單的東西,比如在C++中,你所要做的就是: 'File.read((char *)variable,sizeof(Class));' 並且寫法相似。或者可能是某個數據庫實際上,我想保存和加載,而不需要指定所有細節。 – Ryzokuken

回答

0

增加編組能力是容易的,如果你只導出/導入靜態數據:

class Note 
    attr_reader :text, :title, :color 
    def initialize(text,title,color) 
    @text = text 
    @title = title 
    @color = color 
    end 
    def marshal_dump 
    [@text, @title, @color] 
    end 
    def marshal_load(array) 
    @text, @title, @color = array 
    end 
end 
0

我總是從標準庫建議YAML::Store爲容易保存和加載數據。

你可以看到在我pomodoro tracker

YAML::Store示例實現你可以使用它作爲一個大的哈希,你有鑰匙,投放對象,然後將它們正確序列化/反序列化對於像簡單的Ruby對象的Note班。代碼不必進入你的對象,而是存儲。