Ruby 用地图分割!不';行不通
为什么是地图!不适用于拆分的字符串Ruby 用地图分割!不';行不通,ruby,Ruby,为什么是地图!不适用于拆分的字符串 str = "abcd" str.split('').map! { |x| x + "!" } str # => "abcd" 我希望这将返回[“a!”、“b!”、“c!”、“d!”]str.split(“”)返回一个新数组。正在调用.map不会更改原始的str 将str.split(“”)的结果分配回str: str = str.split('') str.map! { |x| x + "!" } str # => ["a!", "b!"
str = "abcd"
str.split('').map! { |x| x + "!" }
str # => "abcd"
我希望这将返回[“a!”、“b!”、“c!”、“d!”]
str.split(“”)
返回一个新数组。正在调用.map针对新字符串的code>不会更改原始的str
将str.split(“”)
的结果分配回str
:
str = str.split('')
str.map! { |x| x + "!" }
str # => ["a!", "b!", "c!", "d!"]
str = str.split('').map! { |x| x + "!" }
str # => ["a!", "b!", "c!", "d!"]
或者,将整个结果分配回str
:
str = str.split('')
str.map! { |x| x + "!" }
str # => ["a!", "b!", "c!", "d!"]
str = str.split('').map! { |x| x + "!" }
str # => ["a!", "b!", "c!", "d!"]
注意
最初使用相同的变量保存字符串,然后保存数组可能会使代码的读取器感到困惑。最好对数组使用不同的变量
arr = str.split('')
arr.map! { |x| x + "!" }
arr # => ["a!", "b!", "c!", "d!"]
str.split(“”)
返回一个新数组。正在调用.map针对新字符串的code>不会更改原始的str
将str.split(“”)
的结果分配回str
:
str = str.split('')
str.map! { |x| x + "!" }
str # => ["a!", "b!", "c!", "d!"]
str = str.split('').map! { |x| x + "!" }
str # => ["a!", "b!", "c!", "d!"]
或者,将整个结果分配回str
:
str = str.split('')
str.map! { |x| x + "!" }
str # => ["a!", "b!", "c!", "d!"]
str = str.split('').map! { |x| x + "!" }
str # => ["a!", "b!", "c!", "d!"]
注意
最初使用相同的变量保存字符串,然后保存数组可能会使代码的读取器感到困惑。最好对数组使用不同的变量
arr = str.split('')
arr.map! { |x| x + "!" }
arr # => ["a!", "b!", "c!", "d!"]
因为您正在就地更新是的,但是您浪费了那个数组对象,因为您没有将其实例保存到任何地方
characters = "abcd".split('')
characters.map! { |x| x + "!" }
characters
请注意,您可以从split(“”)
移动到chars
,因为您正在就地更新是的,但是由于您没有将其实例保存到任何位置而浪费的数组对象
characters = "abcd".split('')
characters.map! { |x| x + "!" }
characters
请注意,您可以从split(“”)
移动到chars
,也可以使用
你也可以使用
@steenslag,谢谢你的更正。我相应地更新了答案。OP将数组存储在名为str
的变量中的意图非常令人困惑,尤其是当它最初包含字符串时。这个答案可能会尝试提出一个更好的代码版本,其中包含两个不同的变量,以澄清其意图。@SirDarius,我同意。我将更新答案以包含您的建议。谢谢您的评论。@steenslag,谢谢您的更正。我相应地更新了答案。OP将数组存储在名为str
的变量中的意图非常令人困惑,尤其是当它最初包含字符串时。这个答案可能会尝试提出一个更好的代码版本,其中包含两个不同的变量,以澄清其意图。@SirDarius,我同意。我将更新答案以包含您的建议。感谢您的评论。我理解其他答案背后的原因,即尽可能接近原始实现,但在我看来,这是最具可读性的解决方案。虽然在这种情况下,我建议使用每个字符
或映射代码>(与其他答案一样)相反,为了避免创建已处理的数组
,我理解其他答案背后的原因,以便尽可能接近原始实现,但我认为这是最具可读性的解决方案。虽然在这种情况下,我建议使用每个字符
或映射
(与其他答案一样)以避免创建已处置的数组
如何知道它不起作用?您从未为正在映射的数组指定引用代码>ping,那么您如何查看它来检查它是否工作?您如何知道它不工作?您从未为正在映射的数组指定引用代码>ping,那么您如何查看它来检查它是否工作?