3
我有興趣從Yaml文件生成的散列創建對象。Ruby:從散列編程的方法
YAML的文件可能是這個樣子:
foos:
first:
code: f
name: The First Foo
icon: path/to/file.png
second:
code: s
name: The Second Foo
icon: path/to/file.png
bars:
dive:
code: d
name: Dive Bar
location: 100 Main St.
college:
code: c
name: College Bar
location: 100 University Ave.
因此,YAML文件基本上定義了一套屬於類別屬性。 這些類別有一個名稱(foos,bars),每個屬性至少有一個代碼和一個名稱。
所以,我希望能夠做的是創建一個「屬性」模型,將類別名稱轉換爲可以將該類別中的項目作爲簡單對象調用的方法。
我希望能夠做這樣的事情:
Attributes = Attributes.new(...yaml_file...)
Attributes.foos #returns an array of foos
Attributes.foo(:f) #returns the foo with a code (f)
Attributes.foo(:s).name #returns "The Second Foo"
我有點失去了對如何處理這個。
我知道如何設置我的屬性模型以將散列加載到實例變量中,但我不知道如何做的是使用該散列中的鍵創建爲鍵指定的方法,並通過對每個類別的單個項目創建對象的散列,這樣我就可以用點語法將它們鏈接起來。
我知道,與哈希我已經可以做
attributes[:foos][:first][:icon]
但我想利用這個模型從哈希作爲一個起點,我可以添加其他有用的方法來屬性型號稍後。另外,我對ruby相當陌生,我真的很想學習如何做這樣的事情,只是爲了這樣做。
感謝您的幫助!
你有沒有考慮過使用[Struct](http://ruby-doc.org/core/classes/Struct.html)來構建你的類? –
是的,我正在考慮......不太熟悉Structs或它們是如何工作的...... – Andrew