Ruby方法如何就地修改

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ruby方法如何就地修改相关的知识,希望对你有一定的参考价值。

如何编写Ruby方法进行修改?

我想完成以下任务:

def fulljoin(ruby_array)
  r = ''
  ruby_array.each |item| r += "'# item ', "
  r.chop!.chop!
end

a = ['Alex', 'Bert', 'Charlie']
a = fulljoin(a)             # => 'Alex', 'Bert', 'Charlie'

但我想修改数组a:

a.fulljoin!

完成此任务的语法是什么?

答案

最初a是一个阵列。如果你能用理想的结果编写方法a.fulljoin!a将成为一个String,但在Ruby中它是不可能的。

a.fulljoin!可以将a转换为具有单个成员a[0]的数组 - 一个你需要的字符串。它将尽可能接近您的目标:

class Array
  def fulljoin!
    r = "'#self.join("', '")'"
    self.clear
    self[0] = r
  end
end

a = ["Alex", "Bert", "Charlie"]
a.fulljoin!
p a
=> ["'Alex', 'Bert', 'Charlie'"]

P.S。:正如@engineersmnky所建议的,方法fulljoin!可以简化为:

class Array
  def fulljoin!
    self.replace(["'#self.join("', '")'"])
  end
end
另一答案
a.join(' ')
"Alex Bert Charlie"

以上是关于Ruby方法如何就地修改的主要内容,如果未能解决你的问题,请参考以下文章

如何通过就地过滤来修改python集合?

使用 Gulp.js 和 globbing 模式就地修改文件(相同的目标)

Ruby 脚本内的 Ruby 就地编辑

使用 Ruby 逐行读取、编辑和写入文本文件

如何就地修改数据框,使其 ArrayType 列不能为空(nullable = false 且 containsNull = false)?

如何就地替换数组元素