gpt4 book ai didi

Ruby:如何链接方法数组(或拆分字符串)中指定的方法?

转载 作者:数据小太阳 更新时间:2023-10-29 08:16:31 26 4
gpt4 key购买 nike

当方法调用被指定为数组时,如何在 Ruby 中链接方法?

例子:

class String
def bipp(); self.to_s + "-bippity"; end
def bopp(); self.to_s + "-boppity"; end
def drop(); self.to_s + "-dropity"; end
end

## this produces the desired output
##
puts 'hello'.bipp.bopp.drop #=> hello-bippity-boppity-dropity

## how do we produce the same desired output here?
##
methods = "bipp|bopp|drop".split("|")
puts 'world'.send( __what_goes_here??__ ) #=> world-bippity-boppity-droppity

[Ruby 纯粹主义者请注意:此示例采用了风格上的自由。有关分号、括号、注释和符号的首选用法的说明,请随时查阅 Ruby 风格指南(例如,https://github.com/styleguide/ruby)]

最佳答案

试试这个:

methods   =   "bipp|bopp|drop".split("|")
result = 'world'
methods.each {|meth| result = result.send(meth) }
puts result

或者,使用 inject :

methods = "bipp|bopp|drop".split("|")
result = methods.inject('world') do |result, method|
result.send method
end

或者,更简单地说:

methods = "bipp|bopp|drop".split("|")
result = methods.inject('world', &:send)

顺便说一句 - Ruby 不需要在每行末尾使用分号 ;!

关于Ruby:如何链接方法数组(或拆分字符串)中指定的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16024393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com