gpt4 book ai didi

ruby - 在此凯撒密码中, "print i[-1]"是如何从 z 换行到 a 的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:22 28 4
gpt4 key购买 nike

正如标题所说,为什么我们在这段代码中使用“print i[-1]”?

def caesar_cipher (string, number)
string.scan (/./) do |i|
if ("a".."z").include? (i.downcase) # Identify letters only.
number.times {i = i.next}
end
print i[-1] # Wrap from z to a.
end
end

caesar_cipher("Testing abzxc.", 5)

我理解除该特定行之外的所有代码。 ruby 是如何将 Z 包装成 A 的?我的意思是看这段代码:

test1 = "z"
puts test1[-1]
# result is Z not A

我原以为结果是 A,但结果是 Z。有人可以解释一下我在这里遗漏了什么吗?

最佳答案

如果输入是 "z"caesar_cipher("z", 5) 将调用 i = i.next 5次,这会将 i 移动到后面的第 5 个元素。

i = "z"
i = i.next # aa
i = i.next # ab
i = i.next # ac
i = i.next # ad
i = i.next # ae

现在,i[-1] 将从结果中提取最后一个字符,并丢弃前导进位 a

关于ruby - 在此凯撒密码中, "print i[-1]"是如何从 z 换行到 a 的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40589700/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com