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方法如何就地修改的主要内容,如果未能解决你的问题,请参考以下文章
使用 Gulp.js 和 globbing 模式就地修改文件(相同的目标)
如何就地修改数据框,使其 ArrayType 列不能为空(nullable = false 且 containsNull = false)?