当我尝试使用''
缩短数组时,所有其他变量的输出也会发生变化
message = "bot.start"
seperator = message
command = seperator
command[0..3] = ''
message #=> "start"
输出应为"bot.start"
。 Ruby应该在将变量彼此分离时遇到问题。有什么问题?
答案 0 :(得分:1)
在当前版本的Ruby中,字符串是可变的。也就是说,您可以更改字符串的实例。
在您的示例中,message
,command
和separator
都是指向同一字符串实例的不同变量。执行[0..3] = ''
时,您将更改所有变量指向的字符串。
如果您需要创建不同的实例,请使用dup
复制字符串:
command = seperator.dup
或者,不要修改字符串并使用返回字符串新实例的API:
command = seperator[4..-1]
答案 1 :(得分:0)
执行第4行时
command[0..3] = ''
您抓取bot.
并更改为bot.
=> ''
这就是它返回''start
start
的原因