Ruby中的函数指针?
也许这是一个愚蠢的问题,但我是ruby的新手,我用Google搜索,发现这些:
proc=Proc.new {|x| deal_with(x)} a_lambda = lambda {|a| puts a}
但我想要这个:
def forward_slash_to_back(string) ... def back_slash_to_forward(string) ... def add_back_slash_for_post(string) ... ... case conversion_type when /bf/i then proc=&back_slash_to_forward when /fb/i then proc=&forward_slash_to_back when /ad/i then proc=&add_back_slash_for_post else proc=&add_back_slash_for_post end n_data=proc.call(c_data)
但它给了我一个错误。 我不知道如何在Ruby中做到这一点,任何人都可以提供帮助? 非常感谢!
Ruby中很少使用“函数指针”。 在这种情况下,您通常会使用Symbol
和#send
:
method = case conversion_type when /bf/i then :back_slash_to_forward when /fb/i then :forward_slash_to_back when /ad/i then :add_back_slash_for_post else :add_back_slash_for_post end n_data = send(method, c_data)
如果你真的需要一个可调用的对象(例如,如果你想特别为一个案例使用内联lambda/proc
),你可以使用#method
:
m = case conversion_type when /bf/i then method(:back_slash_to_forward) when /fb/i then method(:forward_slash_to_back) when /ad/i then ->(data){ do_something_with(data) } else Proc.new{ "Unknown conversion #{conversion_type}" } end n_data = m.call(c_data)
- Ruby Guard问题 – ‘请安装sqlite3适配器’ – railstutorial.org
- 在rails中获取关联的最后一个值
- 有关从mysql源填充sqlite数据库的ruby解决方案的任何建议
- 在Rails项目中设计未定义的方法
- 当我运行`bundle exec rake test:prepare`它出错了,但是`bundle exec rake db:test:prepare`会很好地发出警告。 这是怎么回事?
- Ruby Devise,SessionsController.create,json – 获取NameError:undefined’build_resource’?
- 如何在Ruby Regex中使用AND
- 访问Chef Library中的节点属性
- 主动资源响应,如何获取它们