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”
?顺便说一下,你的消息是一个字符串,而不是数组。