Hacker Timesnew | past | comments | ask | show | jobs | submitlogin

Not being a ruby programmer, is there a defensive coding idiom that would have prevented this confusion?


You can always test for nil explicitly. Compare:

  unless foo
    # ... foo can be false or nil to reach this branch
  end

  unless foo == false
    # ... this branch is reached unless foo == false
  end
Since terseness is considered such a cardinal virtue amongst Ruby programmers (including myself), however, this kind of issue is often ignored, and difficult to detect unless your tests explicitly check for "truthy" and "non-truthy" values in addition to the true/false literals.


Thanks.


tell me in detail


  if object.nil?
    puts "Object is nil!"
  else
    puts "Object is not nil."
  end


Haskell obviously isn't Ruby, but its Maybe monad, where you have Just the login, or Nothing, looks pretty appealing.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: