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

`Object#define_singleton_method(symbol,method)`如何在ruby中

发布时间:2020-12-17 01:50:22 所属栏目:百科 来源:网络整理
导读:从 Doc of define_singleton_method 我有两种语法来定义单例方法,如下所示: define_singleton_method(symbol) { block } - proc : 使用上面的语法,我尝试了下面的代码和我理解的语法: define_singleton_method :foo do |params = {}| paramsend#= #Proc:0x
Doc of define_singleton_method

我有两种语法来定义单例方法,如下所示:

define_singleton_method(symbol) { block } -> proc :

使用上面的语法,我尝试了下面的代码和我理解的语法:

define_singleton_method :foo do |params = {}|
 params
end
#=> #<Proc:0x20e6b48@(irb):1 (lambda)>

foo
#=> {}

foo(bar: :baz)
#=> {:bar=>:baz}

foo(bar: :baz,rar: :gaz )
#=> {:bar=>:baz,:rar=>:gaz}

但需要有人的帮助,用以下语法找出每个例子.

define_singleton_method(symbol,method) -> new_method

根据doc – 方法参数可以是Proc,Method或UnboundMethod对象.我没有在那里得到任何例子.

谁能帮助我在这里得到一个反对斜体字的例子?

解决方法

Proc对象是使用lambda,proc,– >,Proc.new或&创建的.参数列表中的语法.可以使用方法方法获取Method对象,并且可以使用instance_method方法获取UnboundMethod.以下是每个例子:

p = Proc.new {|x| puts x}
m = method(:puts)
um = Object.instance_method(:puts)

define_singleton_method(:my_puts1,p)
define_singleton_method(:my_puts2,m)
define_singleton_method(:my_puts3,um)

my_puts1 42
my_puts2 42
my_puts3 42

(编辑:李大同)

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

    推荐文章
      热点阅读