我想就地修改 Col1 Col2 Col3 Col4 Col5
Row1 1 1 2 3 4
Row2 2 5 6 7 8
,复制variable
语法,而不是将新的修改值重新分配给相同的methodname!
。我可以使用var
吗?我仍在学习proc
,并认为使用它们非常有用。
procs
第一次调任似乎很麻烦。我想看看proc版本是否可以内联执行。这可能吗?
答案 0 :(得分:7)
这肯定是可能的,您只需要就地修改字符串
linebreak = ->(text) { text.replace text.split("\n").join(",") }
a = "foo\nbar"
linebreak[a]
#⇒ "foo,bar"
a
#⇒ "foo,bar"
不可能的是更改类,这就是split
不起作用的原因(在字符串上调用,它返回一个数组。)
答案 1 :(得分:1)
methodname!
只是一个约定-通常有两种使用相同方法的味道-一种不爆炸,一种不爆炸。如果要使proc更改其参数,则需要使用mutating方法来实现它。
在这种情况下,这是不可能的,因为您正在尝试将字符串转换为数组。您必须重新分配变量:
linebreak = Proc.new { |text| text.split("\n") }
a = linebreak.call(a)