Any equivalent of Ruby's public_send method?

后端 未结 2 1153
情话喂你
情话喂你 2021-01-23 19:02

In Ruby, to construct a method\'s name and send it to an object, one can do:

class Foo
  def foo
    \"FOO\"
  end
end

Foo.new.public_send(:foo)  # => \"FOO\         


        
2条回答
  •  终归单人心
    2021-01-23 19:33

    You should remember that Crystal, unlike Ruby, is a compiled, statically-typed language, so dynamic features of Ruby don't map that well to it.

    Crystal's alternative to dynamism is support for macros - but they are not the same, and you shouldn't expect them to work in the same way.

    Specifically, you can't use macros to pick at runtime the method to be called - in Crystal you can't do that, at all.

    But your question is probably an XY problem - ask for what you're actually trying to solve, and there may be a solution for that.

提交回复
热议问题