POSTS
Ruby中神奇的&符号
这里的 magic 是 & 把 plus1 变成 Block 发给数组了,Block 也就是我们常见的 {}
[1,2,3,4].map {|x| x + 1}
=>[2, 3, 4, 5]
等价于:
[1,2,3,4].map &Proc.new{|x| x + 1 }
=>[2, 3, 4, 5]
注意如果没有 & ,解释器在调用 map 时,把 Proc 当成正常参数,而不是 block
当得知 & 的魔法之后,我们很容易解释 &:symbol 这个语法糖
%w(ouyang jichao).map &:capitalize
=>["Ouyang", "Jichao"]
desuger 完其实就是
%w(ouyang jichao).map &Proc.new(|x| x.send(:capitalize))
为什么可以产生这样的语法糖,是 Symbol 类型有 to_proc 方法,当 & 尝试将后面的东西变成 Proc 类型后传给 map 当 Block, to_proc 就是用来转换成 proc 的方法。所以就是:
%w(ouyang jichao).map &:capitalize.to_proc
=>["Ouyang", "Jichao"]
在rails中,经常需要model查询到ActiveRecord集合对象,但前端需要的是json类型:
1. 返回json数据:
render json:list
2. 直接在erb模板页面取值
@data = list.map(&:attributes)