查看: 1201|回复: 0

Symbol#to_proc

[复制链接]

Fuzzy Ginkgo

梦石
0
星屑
61105
在线时间
1933 小时
注册时间
2010-6-26
回帖
1535

烫烫烫开拓者

发表于 2012-5-21 13:26:05 来自手机 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 orzfly 于 2012-5-21 18:49 编辑
  1. ["Ruby", "Sugar"].map &:downcase
复制代码
在 Ruby 1.9 中,Symbol#to_proc 的出现使得这样的写法成为了现实。

& 这个符号会把会调用后面的对象的 to_proc 方法得到一个块作为当前调用的方法的块。

标题的写法其实相当于
  1. ["Ruby", "Sugar"].map {|obj| obj.downcase}
复制代码
Symbol#to_proc 的实现相当于下面的代码,这可以用在 Ruby 1.8 中。
  1. class Symbol
  2.   def to_proc
  3.     proc { |obj, *args| obj.send(self, *args)}
  4.   end
  5. end
复制代码

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本发帖返回顶部