他們可以這樣Ruby中匿名結構的目的是什麼?
Struct.new(:x, :y)
中定義,但有什麼可以有效地和他們做了什麼?具體來說,我如何創建這樣一個結構的實例?這不起作用
Struct.new(:x => 1, :y => 1)
(你TypeError: can't convert Hash into String
)。
我正在使用Ruby 1.9.2。
更新:
好指針,迄今爲止,謝謝。我想我問這個的原因是我有好幾次發現自己想要做這個
Struct.new(:x => 1, :y => 1)
只是,這樣我可以繞過我在哪裏可以寫obj.x
代替,比如說一個對象,實例化一個散列並且必須寫obj[:x]
。在這種情況下,我想要的結構是真的是匿名 - 我不想通過命名從Struct.new
調用返回的內容來污染我的命名空間。最接近的東西,如已經建議是
Struct.new(:x, :y).new(1, 1)
但是你怎麼喜歡他們的蘋果?我不確定我是否確定。期望能夠一次性定義和實例化一個匿名結構(作爲核心Ruby的一部分)是否合理?我猜當我閱讀Struct.new
上的官方Ruby文檔時,我認爲「匿名」這個詞允許這樣做,但事實並非如此。
這可能是也很有趣,爲您滑過:http://stackoverflow.com/questions/1177594/ruby-struct-vs-openstruct – gilligan 2011-12-22 11:30:22
是的,我發現之前發佈但它不直接解決匿名結構。 – Ben 2011-12-22 12:43:21