Ruby的public_send方法在Crystal中有等效实现吗?
Crystal中动态构造方法名并调用的等效实现
在Crystal里,和你Ruby代码中用public_send动态调用方法的逻辑,对应的是send方法,用法几乎完全一致——不管你传符号形式的方法名还是字符串形式的都能正常工作。
举个和你示例对应的代码:
class Foo def foo "FOO" end end # 用符号调用方法 Foo.new.send(:foo) # => "FOO" # 用字符串调用方法 Foo.new.send("foo") # => "FOO"
补充个小细节:Crystal的send默认只允许调用公共方法,这和Ruby的public_send行为对齐。如果需要调用私有或受保护的方法,Crystal提供了private_send方法,对应Ruby里直接用send调用私有方法的场景,不过日常开发里send的使用频率会更高。
内容的提问来源于stack exchange,提问作者WPeN2Ic850EU
相关产品推荐
相关产品推荐

