我试图将所有字母移到右边,同时排除非字母。这个操作看起来很简单,我无法理解为什么这不会给我返回值+ 1.我来自Python背景和Ruby新手,如果我犯了一个非常明显的错误请原谅我。
def rotate(letter_num)
if letter_num + 1 == 123
return 97
elsif letter_num + 1 == 91
return 65
elsif !(letter_num =~ /[a-zA-Z]/)
return letter_num
else
return letter_num + 1
end
end
示例1: 实际结果:
rotate(60)
=> 60
预期结果:
rotate(60)
=> 61
示例2:
实际结果:
rotate(123)
=> 123
预期结果:
rotate(123)
=> 97
答案 0 :(得分:1)
这与if-expressions的工作原理无关。发生的事情是表达式!(letter_num =~ /[a-zA-Z]/)
对于所有这些数字都是正确的(因为它们是数字而不是包含字母的字符串),所以每次都会点击return letter_num
行。