谁能告诉我为什么会出现以下情况:
['a', 'b'].inject({}) {|m,e| m[e] = e }
抛出错误:
IndexError: string not matched
from (irb):11:in `[]='
from (irb):11:in `block in irb_binding'
from (irb):11:in `each'
from (irb):11:in `inject'
from (irb):11
from C:/Ruby192/bin/irb:12:in `<main>'
而下面的工作?
a = {}
a["str"] = "str"
最佳答案
您的区 block 需要返回累积哈希:
['a', 'b'].inject({}) {|m,e| m[e] = e; m }
相反,它在第一次传递后返回字符串 'a',在下一次传递中变为 m
并且您最终调用字符串的 []=
方法。
关于Ruby 注入(inject)初始是一个散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9434162/