我将如何在Ruby中实现如下所示的函数元素?
change_me! (val)
更新:
我打算做的是这样的:
def change_me! (val) val = val.chop while val.end_with? '#' or val.end_with? '/' end
结果就是……
change_me! 'test#///' => "test#///"
yptwkmov1#
你把这件事想错了。虽然在Ruby中可以做到这一点,但太复杂了。执行此操作的正确方法是:
val.change_me!
当然,这取决于你想要改变的类别。关键是,按照惯例,带有‘!’的方法影响在其上调用它们的类示例。所以..。
class Changeable def initialize var @var = var end def change_me! change=1 @var += change end end a = Changeable.new 5 # => New object "Changeable", value 5 a.change_me! 6 # => @var = 7 a.change_me! # => @var = 8
希望这会有一点帮助..
anauzrmj2#
您要执行以下操作:
def change_me(val) val.replace "#{val}!" end
这将用新的值替换该值。但相信我:您通常不会希望以这种方式设计Ruby代码。开始在对象和类中思考。设计没有副作用的代码。这将省去很多麻烦。
myzjeezk3#
val是什么类型的对象?您希望如何更改它?如果您只想改变一个对象(比方说,一个数组或一个字符串),那么您所要求的将直接起作用:
val
def change_me!(me) me << 'abides' end val = %w(the dude) change_me!(val) puts val.inspect val = "the dude " change_me!(val) puts val.inspect
3条答案
按热度按时间yptwkmov1#
你把这件事想错了。虽然在Ruby中可以做到这一点,但太复杂了。执行此操作的正确方法是:
当然,这取决于你想要改变的类别。关键是,按照惯例,带有‘!’的方法影响在其上调用它们的类示例。所以..。
希望这会有一点帮助..
anauzrmj2#
您要执行以下操作:
这将用新的值替换该值。但相信我:您通常不会希望以这种方式设计Ruby代码。开始在对象和类中思考。设计没有副作用的代码。这将省去很多麻烦。
myzjeezk3#
val
是什么类型的对象?您希望如何更改它?如果您只想改变一个对象(比方说,一个数组或一个字符串),那么您所要求的将直接起作用: