有时当我将方法名作为参数传递时,我发现自己希望有一个身份函数any_obj.send(:identity) == any_obj,所以不要这样:
(transform.nil?) ? my_obj : my_obj.send(transform)
Run Code Online (Sandbox Code Playgroud)
我可以写
my_obj.send(transform || :identity)
Run Code Online (Sandbox Code Playgroud)
(这是一个人为的例子 - 身份函数可以做的不仅仅是在更复杂的例子中保存一些按键.)
打开Object的定义并添加它会很容易,但是我已经忽略了哪些内容?还有其他人想要这个吗?
PS:我知道我的例子应该说明any_obj.send(:identity).equal?(any_obj),但有时迂腐模糊了这个问题.
Aje*_*i32 26
是.您正在寻找Object#itself,可在Ruby 2.2+中找到.
来自文档:
本身→an_object
返回obj.
Run Code Online (Sandbox Code Playgroud)string = 'my string' #=> "my string" string.itself.object_id == string.object_id #=> true