用红宝石中的地图链接问题

时间:2015-04-06 21:53:28

标签: ruby

当我这样链时:

self.config["footers"].map({|f| f["name"]}).include?(footer_name)

我明白了:

syntax error, unexpected '}', expecting keyword_end

我在这里做错了什么?

3 个答案:

答案 0 :(得分:5)

您将map的块放在括号中。请改用:

self.config["footers"].map {|f| f["name"]}.include?(footer_name)

如果由于某种原因,一般情况下,您遇到优先级问题,请在整个调用周围加上括号:

(self.config["footers"].map {|f| f["name"]}).include?(footer_name)

答案 1 :(得分:3)

不要将map块放入()。这是一个块,而不是参数:

self.config["footers"].map{|f| f["name"]}.include?(footer_name)

答案 2 :(得分:0)

如果由于管理强加的括号配额而绝对必须使用括号,则可以将带有&符号运算符的proc传递给解释为块。

self.config["footers"].map(&proc{|f| f["name"]}).include?(footer_name)

虽然比正确的块使用更不干净和令人满意,但它可以为您的括号预算向请购单委员会证明其合理性。