[前][次][番号順一覧][スレッド一覧]

ruby-changes:28854

From: zzak <ko1@a...>
Date: Fri, 24 May 2013 06:46:56 +0900 (JST)
Subject: [ruby-changes:28854] zzak:r40906 (trunk): reapply r40839 [Fixes GH-316]

zzak	2013-05-24 06:46:43 +0900 (Fri, 24 May 2013)

  New Revision: 40906

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=40906

  Log:
    reapply r40839 [Fixes GH-316]

  Modified files:
    trunk/lib/forwardable.rb

Index: lib/forwardable.rb
===================================================================
--- lib/forwardable.rb	(revision 40905)
+++ lib/forwardable.rb	(revision 40906)
@@ -19,30 +19,40 @@ https://github.com/ruby/ruby/blob/trunk/lib/forwardable.rb#L19
 # #record_number(), which simply calls #[] on the <tt>@records</tt>
 # array, like this:
 #
+#   require 'forwardable'
+#
 #   class RecordCollection
+#     attr_accessor :records
 #     extend Forwardable
 #     def_delegator :@records, :[], :record_number
 #   end
 #
+# We can use the lookup method like so:
+#
+#   r = RecordCollection.new
+#   r.records = [4,5,6]
+#   r.record_number(0)  # => 4
+#
 # Further, if you wish to provide the methods #size, #<<, and #map,
 # all of which delegate to @records, this is how you can do it:
 #
-#   class RecordCollection
-#     # extend Forwardable, but we did that above
+#   class RecordCollection # re-open RecordCollection class
 #     def_delegators :@records, :size, :<<, :map
 #   end
-#   f = Foo.new
-#   f.printf ...
-#   f.gets
-#   f.content_at(1)
-#
-# If the object isn't a Module and Class, You can too extend Forwardable
-# module.
-#
-#   printer = String.new
-#   printer.extend Forwardable              # prepare object for delegation
-#   printer.def_delegator "STDOUT", "puts"  # add delegation for STDOUT.puts()
-#   printer.puts "Howdy!"
+#
+#   r = RecordCollection.new
+#   r.records = [1,2,3]
+#   r.record_number(0)   # => 1
+#   r.size               # => 3
+#   r << 4               # => [1, 2, 3, 4]
+#   r.map { |x| x * 2 }  # => [2, 4, 6, 8]
+#
+# You can even extend regular objects with Forwardable.
+#
+#   my_hash = Hash.new
+#   my_hash.extend Forwardable              # prepare object for delegation
+#   my_hash.def_delegator "STDOUT", "puts"  # add delegation for STDOUT.puts()
+#   my_hash.puts "Howdy!"
 #
 # == Another example
 #

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]