Bất kỳ một thể cho tôi biết tại sao như sau:của Ruby tiêm với ban đầu là một hash
['a', 'b'].inject({}) {|m,e| m[e] = e }
ném lỗi:
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>'
trong khi các công trình sau đây?
a = {}
a["str"] = "str"
Hoàn toàn cần thiết để bao gồm m ở cuối? Ví dụ, nếu khối là '{| mảng, (k, v) | mảng << MyObject.new (k, v)} 'có hoạt động không? Xem xét 'mảng. <<' trả về mảng. – Ziggy
@ Ziggy: có, nó là cần thiết vì việc gán 'băm [key] = value' trả về' giá trị', và bạn cần 'băm'. – tokland