if语句如何返回值?

时间:2014-05-20 18:59:27

标签: ruby

我试图将所有字母移到右边,同时排除非字母。这个操作看起来很简单,我无法理解为什么这不会给我返回值+ 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

1 个答案:

答案 0 :(得分:1)

这与if-expressions的工作原理无关。发生的事情是表达式!(letter_num =~ /[a-zA-Z]/)对于所有这些数字都是正确的(因为它们是数字而不是包含字母的字符串),所以每次都会点击return letter_num行。