if (expression)
   block # 1
end

block # 1 would be executed if expression is true.

Watch this,
a = 5

# 2
if (a)
  block # 2
end

# 3
if (true)
  block # 3
end

# 4
if (a == true)
  block # 4
end

# 5
if (a.class == TrueClass)
  block # 5
end

# 6
if (not a.nil?)
  block # 6
end

Ofcource, block # 4 and #5 would not execute.
Why would block # 2 ?

So, isn't #6 more logical than #2.
Didn't we wanted to mean #6 when we wrote #2


--
Mohammad