Ruby更改多个变量,但它们不应该';不变

Ruby更改多个变量,但它们不应该';不变,ruby,Ruby,当我试图用''缩短数组时,所有其他变量的输出也在变化 message = "bot.start" seperator = message command = seperator command[0..3] = '' message #=> "start" 输出应该是“bot.start”。Ruby在将变量彼此分离时会遇到问题。怎么了?执行第4行时 命令[0..3]='' 您抓取了机器人。并更改为机器人。=>' 这就是为什么它返回“start,即start 在当前版本的Ruby中,字符串是

当我试图用
''
缩短数组时,所有其他变量的输出也在变化

message = "bot.start"
seperator = message
command = seperator
command[0..3] = ''
message #=> "start"

输出应该是
“bot.start”
。Ruby在将变量彼此分离时会遇到问题。怎么了?

执行第4行时

命令[0..3]=''

您抓取了
机器人。
并更改为
机器人。
=>
'

这就是为什么它返回
“start
,即
start


在当前版本的Ruby中,字符串是可变的。也就是说,您可以更改字符串的实例

在您的示例中,
消息
命令
分隔符
都是指向同一字符串实例的不同变量。当您执行
[0..3]=''
时,您正在更改所有变量指向的字符串

如果需要创建不同的实例,请使用
dup
复制字符串:

command = seperator.dup
或者,不要修改字符串并使用返回字符串新实例的API:

command = seperator[4..-1]

我不知道Ruby,但是通常使用
=
意味着你指的是同一个对象。如果是这种情况,
command=separator
使
command
separator
实际上是同一个对象。如果你想让它们单独行动,你可能需要在分配之前复制一份
分隔符
。为什么你认为“[t]输出应该是
”bot.start”
?顺便说一下,你的
消息是一个字符串,而不是数组。