Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
This Ruby should be able to have fun with private writer methods. That is what This is. @chadfowler posted this ruby quiz on twitter on Mar 31, 2009: Ruby quiz: in 140 chrs or less, why doesn't this work: class Y; def a; self.x end; private; def x; puts "hi" end end; Y.new.a (http://twitter.com/chadfowler/status/11390678834) With whitespace: class Y def a self.x end private def x puts "hi" end end Y.new.a results in: NoMethodError: private method `x' called for #<Y:0x10f6af8> from (irb):1:in `a' from (irb):1 You get a NoMethodError because you can't call a private method on self. Ruby doesn't check the caller when sending messages to the 'self' receiver, so privacy reigns. With This, we get: require 'this' include This class Y def a this.x end private def x puts "hi" end end Y.new.a hi => nil Ahhh... Copyright 2010 Ryan Angilly