Ruby 字符串数组覆盖自己?
Ruby String Arrays Overwriting Themselves?
出于某种原因,字符串被 mirror[j] = string[i]
操作重写为镜像
我不知道为什么会这样,我没有命令它这样做。我的 reverse(string) 函数的输出将在中间停止,例如:
ABCDEF -> FEDDEF
但我正在尝试这样做:
ABCDEF -> FEDCBA
def reverse(string)
mirror = string
i = string.length - 1
j = 0
while j < string.length
mirror[j] = string[i]
puts(mirror)
j = j + 1
i = i - 1
end
return mirror
end
您需要使用 #dup
。在您的情况下, mirror = string
表示两个变量都持有同一对象的引用。因此,当您更改对象时,可以通过 string
和 mirror
.
反映出来
def reverse(string)
mirror = string.dup
i = string.length - 1
j = 0
while j < string.length
mirror[j] = string[i]
j += 1 # same as j = j + 1
i -= 1 # same as i = i - 1
end
mirror
# last expression is returned by default, so you can write only `mirror` instead of `return mirror`
end
p reverse 'ABCDEF' # "FEDCBA"
出于某种原因,字符串被 mirror[j] = string[i]
操作重写为镜像我不知道为什么会这样,我没有命令它这样做。我的 reverse(string) 函数的输出将在中间停止,例如: ABCDEF -> FEDDEF 但我正在尝试这样做: ABCDEF -> FEDCBA
def reverse(string)
mirror = string
i = string.length - 1
j = 0
while j < string.length
mirror[j] = string[i]
puts(mirror)
j = j + 1
i = i - 1
end
return mirror
end
您需要使用 #dup
。在您的情况下, mirror = string
表示两个变量都持有同一对象的引用。因此,当您更改对象时,可以通过 string
和 mirror
.
def reverse(string)
mirror = string.dup
i = string.length - 1
j = 0
while j < string.length
mirror[j] = string[i]
j += 1 # same as j = j + 1
i -= 1 # same as i = i - 1
end
mirror
# last expression is returned by default, so you can write only `mirror` instead of `return mirror`
end
p reverse 'ABCDEF' # "FEDCBA"