Ruby:如何更改函数调用中的参数值?

klsxnrf1  于 2022-09-21  发布在  Ruby
关注(0)|答案(3)|浏览(215)

我将如何在Ruby中实现如下所示的函数元素?

change_me! (val)

更新

我打算做的是这样的:

def change_me! (val)
  val = val.chop while val.end_with? '#' or val.end_with? '/'
end

结果就是……

change_me! 'test#///'     => "test#///"
yptwkmov

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

希望这会有一点帮助..

anauzrmj

anauzrmj2#

您要执行以下操作:

def change_me(val)
  val.replace "#{val}!"
end

这将用新的值替换该值。但相信我:您通常不会希望以这种方式设计Ruby代码。开始在对象和类中思考。设计没有副作用的代码。这将省去很多麻烦。

myzjeezk

myzjeezk3#

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

相关问题