我想在Ruby中編寫一個函數,它可以接受一個數組中的數組,並將其轉換爲哈希。這將用於模擬句子並創建任意的單詞序列。生成的地圖將有助於生成與當前句子規則一起提供的所有句子組合。從Ruby數組中創建一個映射
我該如何去做到這一點?我有點失落,從哪裏開始。
我想在Ruby中編寫一個函數,它可以接受一個數組中的數組,並將其轉換爲哈希。這將用於模擬句子並創建任意的單詞序列。生成的地圖將有助於生成與當前句子規則一起提供的所有句子組合。從Ruby數組中創建一個映射
我該如何去做到這一點?我有點失落,從哪裏開始。
嘗試這種情況:
arr = [ ["<start>", "The <object> <verb> tonight."],
["<object>", "waves", "big yellow flowers", "slugs"],
["<verb>", "sigh <adverb>", "portend like <object>", "die <adverb>"],
["<adverb>", "warily", "grumpily"] ]
arr.map { |ar| [ar.shift, ar.map { |str| str.split }] }.to_h
#=>
#{ "<start>" => [["The", "<object>", "<verb>", "tonight."]],
# "<object>" => [["waves"], ["big", "yellow", "flowers"], ["slugs"]],
# "<verb>" => [["sigh", "<adverb>"], ["portend", "like", "<object>"], ["die", "<adverb>"]],
# "<adverb>" => [["warily"], ["grumpily"]] }
ar.shift
需要每個子陣列的第一個元素。與ar.map
一起使用的塊將剩餘的元素拆分爲數組(空白)。最後,to_h
將結果數組轉換爲散列。
歡迎來到SO。我們希望看到您嘗試解決此問題,而不是代碼請求。請閱讀「[問]」,包括鏈接頁面,「[mcve]」和「[Stack Overflow用戶需要多少研究工作?](http://meta.stackoverflow.com/q/261592)」。目前你的問題還爲時過早。嘗試,嘗試,再嘗試一些,然後詢問關於代碼的一部分的具體問題。 –