加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

返回Ruby中对象的yield的方法

发布时间:2020-12-17 02:42:19 所属栏目:百科 来源:网络整理
导读:Ruby中是否有一个返回传递给对象的块内容的方法? 例如,如果我有一个我想要放入数组的对象怎么办? 在一个理想的世界里,我们会做(我正在寻找的): "string".reverse.upcase.something{ |s| send(s) } 它会返回一个包含我的对象的数组,相当于: send("string"
Ruby中是否有一个返回传递给对象的块内容的方法?

例如,如果我有一个我想要放入数组的对象怎么办?

在一个理想的世界里,我们会做(我正在寻找的):

"string".reverse.upcase.something{ |s| send(s) }

它会返回一个包含我的对象的数组,相当于:

send("string".reverse.upcase)

如果我的对象开始时它是不可链接的,并且在更复杂的场景中会变得混乱.

因此,something方法将返回块的评估,如Array#map,但仅针对一个元素.

解决方法

我不知道内置这样的东西,但你可以自己轻松做到:

class Object
  def something(&block)
    block.call(self)
  end
end

p "foo".something { | o | [o] }
p 23.something { | x | p x; 42 }

["foo"]      # object "foo" put into an array
23           # object handed to block
42           # something return block's result

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读