From: "Jonas Pfenniger (zimbatm)" Date: 2011-01-10T09:06:50+09:00 Subject: Re: Confusion regarding boolean operators. Hi, it looks like the ! unary operator is now definable in ruby-1.9.2. This is something that has changed from the 1.8.X series, which may explain why the documentation error. Not all operators can be overridden, but most of them are. There is a finite list of them, so it's not possible to define new-ones (this would require to change the parser). If they are, they are represented as a special method to an object. If not, then you can do nothing about it. The other logic operators are in the latter set. To understand how it works, basically, when ruby sees one of those operators, it is like it would rewrite the expression behind the scene to look like a method call. In that case, "!obj" would become "obj.!()". "a + b", would become "a.+(b)". The latter expression is not necessarily a valid syntax because these characters are special, but you get the idea. Finally, you can also write : class God def !@ end end The other unary operator that I know of (-), requires this @ character to distinguish from a.-(b), which is yet another operator. I find this to be more readable. Hope this helps