ѕтƒ*_*ѕтƒ 0 ruby string mutable
我有一个字符串:
str="D\\projects\\myown\\java"
Run Code Online (Sandbox Code Playgroud)
我将此字符串分配给两个变量,如:
str1=str
str2=str
Run Code Online (Sandbox Code Playgroud)
我做了以下操作后:
idgb1=str1.gsub!("\\","_")
Run Code Online (Sandbox Code Playgroud)
我得到str1的D_projects_myown_java和str2是一样的.为什么会这样?我不想str2改变它的价值.
str1并且str2只是引用str,字符串不会复制到那些变量.并String#gsub!更新字符串.
如果你想保持str2完整,你需要这样做:
str2 = str.dup
Run Code Online (Sandbox Code Playgroud)
要么
str2 = str.clone
Run Code Online (Sandbox Code Playgroud)
此外,如果你使用String#gsub的不是String#gsub!,str并str2不会改变.