I was working on an assignment for my Algorithms & Data Structures
class when I determined that I had a need to figure out whether an
array was (a) empty, or contained nothing but nils and things that I
want to consider nil, or (b) contained non-nil-esque items. So I was
pleasantly surprised to discover Array#nitems; I thought to myself,
"I'll just make nil-like things respond true to nil?". However, this
didn't seem to work: it appears that Array#nitems checks whether the
array elements == nil, not whether they respond true to nil?. It seems
to me that a nil?-based approach would be more productive, allowing
greater flexibility in terms of what counts as an item.

In case I'm being unclear, if I do
class Thing
  def nil?
    true
  end
end
t = Thing.new
I think it should be the case that [t, nil, 7].nitems returns 1,
instead of 2 as it currently does.

-Eliah.