带有 bang 的 Ruby 链接

cen*_*uro 2 ruby

是否可以在不使用作业的情况下编写这段代码摘录?

self.name = self.name.to_s.squeeze(' ').strip

我尝试过使用这些方法的爆炸版本,但不能很好地使用,因为nil如果操作没有执行任何更改(而不是返回self),它们就会返回。

Chu*_*uck 5

你必须点击整个东西。所以它会是这样的:

str.tap {|x| x.squeeze!(' ')}.tap(&:strip!)
Run Code Online (Sandbox Code Playgroud)

我通常不建议这样做。即使您迫切需要突变,最好的代码清晰度也来自于按照设计方式使用方法:

str.squeeze!(' ')
str.strip!
Run Code Online (Sandbox Code Playgroud)

如果这不方便,请考虑您是否真的需要该突变。