[英]Is it possible to initialize a Ruby hash with a do block?
我喜歡Ruby do ... end
塊的感覺,並且我希望能夠使用它來初始化哈希。 我知道花括號的構造,例如
h = {
:a => 10,
:b => 20
}
但是我想知道是否有辦法用do塊做同樣的事情,例如
h_keys = keys do
:a => 10,
:b => 20
end
編輯
讓我更清楚一點:我確實理解哈希文字不是一個塊,並且我對塊的內部有了很好的了解。 我想知道的更多是這樣的:
是否有可能通過(但不限於)某種聰明的元編程方法來編寫一個函數,以便將傳遞給它的塊解釋為哈希?
盡管do
... end
了,但這有點類似於您所需的示例代碼:
def keys(x); x; end
h = keys a: 1, b: 2
不幸的是, keys do a: 1, b: 2 end
與Ruby的語法不匹配。 當然,您仍然可以編寫一個可以在源文件上運行的預處理器,將添加的語法重寫為標准Ruby語法,然后將其提供給解釋器。 那會有點瘋狂,但是如果您想這樣做,就會為您帶來更大的力量...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.