是否有快捷方式可以使用 ruby 中用于该方法的返回值分配某个变量?



我经常这样做:

@value = @value.some_method

但是在ruby中没有更短的语法吗?有些方法提供等效的bang,但遗憾的是不是所有的方法…

对于迭代可以使用:

 i += 1

是否也可以用于上面的代码片段?

没有比这更短的方法了。

公平地说,

是一个不寻常的模式,虽然不是特别罕见,但如果有像

这样的操作符,则会导致混淆:
@value .= some_method

在读取时应该如何解析?

正如铁皮人所指出的,在这里,就地操作符才是最好的。

不能将实际变量作为接收方,因为无法获得变量的名称。相反,您需要像这样使用变量名:

class A
  attr_accessor :value
  def change_to_do_something name
    instance_variable_set(name, "do something")
  end
end
a = A.new
a.value = "Hello"
p a.value
# => "Hello"
a.change_to_do_something(:@value)
p a.value
# => "do something"

最新更新