作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我很好奇send
和public_send
有什么区别。例如:
class Klass
def hello(*args)
"Hello " + args.join(' ')
end
end
k = Klass.new
k.send :hello, "gentle", "readers" #=> "Hello gentle readers"
k.public_send :hello, "gentle", "readers" #=> "Hello gentle readers"
最佳答案
Unlike send, public_send calls public methods only.
例子:
class Klass
private
def private_method
puts "Hello"
end
end
k = Klass.new
k.send(:private_method)
# => "Hello"
k.public_send(:private_method)
# => `public_send': private method `private_method' called for #<Klass:0x007f5fd7159a80> (NoMethodError)
您可能希望使用 #public_send
而不是 #send
,以免规避私有(private)/ protected 可见性。
关于ruby - Ruby 的 send 和 public_send 方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30401970/
Tldr:我正在尝试使用 public_send 来调用方法,但其中一些方法也需要参数。如何检查哪些需要参数并将它们添加为参数并将它们包含在调用中 我在这样的类中有一组方法 class_methods
我正在尝试使用元编程构建一个通用方法,它使用 array 中的操作 method 并使用 send 到对象 splat,以下是工作片段: ALLOWED_DATA_TYPES = { 'Integ
我很好奇send和public_send有什么区别。例如: class Klass def hello(*args) "Hello " + args.join(' ') end end
send 可用于调用公共(public)和私有(private)方法。 例子: class Demo def public_method p "public_method" end
我是一名优秀的程序员,十分优秀!