如何检查参数是否为整数,如果不是 return nil

how to check if an argument is an integer and if not return nil

我如何在 ruby 中写这个“检查某物是否为整数,如果不是 return 则为零。否则将其除以 2 和 return 结果。我 不明白如何让它检查它是否不是整数并且 return nil。将其写入函数
def halve(x) x / 2 end

在Ruby中,你可以使用instance_of? to check if the object is an instance of a given class and is_a? which returns true if the given class is the class of the object ,或者如果给定的 class 是对象的超class之一。

In Ruby 多态性或 duck-typing 是首选,在这个例子中,我认为其中一种方法也是一个不错的选择。恕我直言 is_a? 比 Ruby 中的 instance_of? 更惯用,但这取决于您的具体用例。

def halve(x)
  if x.is_a?(Integer)
    x / 2.0  
  else
    nil
  end
end

请注意,我将 x / 2 更改为 x / 2.0,因为假设 x = 3 然后 x / 2 会 return 1x / 2.0将 return 1.5。有关详细信息,请参阅 Integer#/ 的文档。

def halve(x)
  x.is_a?(Integer) ? x.fdiv(2) : nil
end
如果传递的参数是该对象的 class,则

#is_a?(obj) return 为真。您也可以使用 #kind_of?(obj).

#fdiv(n) return 浮动。 1.fdiv(2) 将 return 0.5(可能是你想要的)不像 1 / 2 returns 0.