问题描述
|
我编写了一个小示例代码,使用
instance_method
与\"some string\".methods
做同样的事情:
instance_method(\'methods\').bind(\"some string\").call
我不知道instance_method的接收者是什么,所以我当然得到了未定义的方法错误
什么是使用此方法的正确方法?
解决方法
instance_method
的接收者将是您自己的,无论您处于什么环境,这都可能是一个错误。
您(大概)想做的就是给它明确的接收者。在这种情况下,保存字符串方法的类为String
类。
str = \"some string\"
meths = String.instance_method(\'methods\').bind(str)
meths == str.method(\'methods\') # => true
meths.call # => [:<=>,:==,:===,...etc... ]
你看? \"some string\"
是String
的一个实例。所以String
的实例方法就是\"some string\"
的方法。