mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* object.c: Add usage documentation for BasicObject. Based on patch
by Thomas Sawyer. [Ruby 1.9 - Bug #5067] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32700 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									e29d58970b
								
							
						
					
					
						commit
						3eb7d2b33e
					
				
					 2 changed files with 52 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -1,3 +1,8 @@
 | 
			
		|||
Wed Jul 27 15:39:14 2011  Eric Hodel  <drbrain@segment7.net>
 | 
			
		||||
 | 
			
		||||
	* object.c:  Add usage documentation for BasicObject.  Based on patch
 | 
			
		||||
	  by Thomas Sawyer.  [Ruby 1.9 - Bug #5067]
 | 
			
		||||
 | 
			
		||||
Wed Jul 27 12:24:17 2011  Eric Hodel  <drbrain@segment7.net>
 | 
			
		||||
 | 
			
		||||
	* lib/rubygems/uninstaller.rb:  Add missing require and update
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										47
									
								
								object.c
									
										
									
									
									
								
							
							
						
						
									
										47
									
								
								object.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -2614,6 +2614,53 @@ rb_f_array(VALUE obj, VALUE arg)
 | 
			
		|||
 *
 | 
			
		||||
 *  BasicObject is the parent class of all classes in Ruby.  It's an explicit
 | 
			
		||||
 *  blank class.
 | 
			
		||||
 *
 | 
			
		||||
 *  BasicObject can be used for creating object hierarchies independent of
 | 
			
		||||
 *  Ruby's object hierarchy, proxy objects like the Delegator class, or other
 | 
			
		||||
 *  uses where namespace pollution from Ruby's methods and classes must be
 | 
			
		||||
 *  avoided.
 | 
			
		||||
 *
 | 
			
		||||
 *  To avoid polluting BasicObject for other users an appropriately named
 | 
			
		||||
 *  subclass of BasicObject should be created instead of directly modifying
 | 
			
		||||
 *  BasicObject:
 | 
			
		||||
 *
 | 
			
		||||
 *    class MyObjectSystem < BasicObject
 | 
			
		||||
 *    end
 | 
			
		||||
 *
 | 
			
		||||
 *  BasicObject does not include Kernel (for methods like +puts+) and
 | 
			
		||||
 *  BasicObject is outside of the namespace of the standard library so common
 | 
			
		||||
 *  classes will not be found without a using a full class path.
 | 
			
		||||
 *
 | 
			
		||||
 *  A variety of strategies can be used to provide useful portions of the
 | 
			
		||||
 *  standard library to subclasses of BasicObject.  A subclass could
 | 
			
		||||
 *  <code>include Kernel</code> to obtain +puts+, +exit+, etc.  A custom
 | 
			
		||||
 *  Kernel-like module could be created and included or delegation can be used
 | 
			
		||||
 *  via #method_missing:
 | 
			
		||||
 *
 | 
			
		||||
 *    class MyObjectSystem < BasicObject
 | 
			
		||||
 *      DELEGATE = [:puts, :p]
 | 
			
		||||
 *
 | 
			
		||||
 *      def method_missing(name, *args, &block)
 | 
			
		||||
 *        super unless DELEGATE.include? name
 | 
			
		||||
 *        ::Kernel.send(name, *args, &block)
 | 
			
		||||
 *      end
 | 
			
		||||
 *
 | 
			
		||||
 *      def respond_to_missing?(name, include_private = false)
 | 
			
		||||
 *        DELGATE.include?(name) or super
 | 
			
		||||
 *      end
 | 
			
		||||
 *    end
 | 
			
		||||
 *
 | 
			
		||||
 *  Access to classes and modules from the Ruby standard library can be
 | 
			
		||||
 *  obtained in a BasicObject subclass by referencing the desired constant
 | 
			
		||||
 *  from the root like <code>::File</code> or <code>::Enumerator</code>.
 | 
			
		||||
 *  Like #method_missing, #const_missing can be used to delegate constant
 | 
			
		||||
 *  lookup to +Object+:
 | 
			
		||||
 *
 | 
			
		||||
 *    class MyObjectSystem < BasicObject
 | 
			
		||||
 *      def self.const_missing(name)
 | 
			
		||||
 *        ::Object.const_get(name)
 | 
			
		||||
 *      end
 | 
			
		||||
 *    end
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*  Document-class: Object
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue