[ruby] Ruby中的zero?

117 阅读1分钟

Ruby中为何会有zero?方法?

在做数值的0值判断时候,通常如下编码,尤其是有其他语言(c/c++/java)背景的人:

if count_people == 0
  // do something
end

但是,难免敲漏了字符(少敲了一个等于号=),于是,代码变成:

if count_people = 0
  //  该代码块始终会执行,因为count_people始终truthy
end

于是,为了避免上述问题,代码变成:

if 0 == count_people
  # do something
end

如果再敲漏了字符,则Ruby解释器会抛异常:

if 0 = count_people
  # do something
end

syntax error, unexpected '=', expecting `then' or ';' or '\n'
if 0 = count_people  # syntax error...

而zero?方法很好的表达了意图,我们要对数值进行0值判断。

Reference

  1. What Ruby's zero? can teach you about object-oriented programming?