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

ruby-changes:48290

From: marcandre <ko1@a...>
Date: Wed, 25 Oct 2017 03:08:09 +0900 (JST)
Subject: [ruby-changes:48290] marcandRe: r60404 (trunk): lib/weakref: Remove incorrect example [DOC] [Bug #14031]

marcandre	2017-10-25 03:08:00 +0900 (Wed, 25 Oct 2017)

  New Revision: 60404

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=60404

  Log:
    lib/weakref: Remove incorrect example [DOC] [Bug #14031]

  Modified files:
    trunk/lib/weakref.rb
Index: lib/weakref.rb
===================================================================
--- lib/weakref.rb	(revision 60403)
+++ lib/weakref.rb	(revision 60404)
@@ -15,53 +15,6 @@ require "delegate" https://github.com/ruby/ruby/blob/trunk/lib/weakref.rb#L15
 #   GC.start                    # start the garbage collector
 #   p foo.to_s                  # should raise exception (recycled)
 #
-# == Example
-#
-# With help from WeakRef, we can implement our own rudimentary WeakHash class.
-#
-# We will call it WeakHash, since it's really just a Hash except all of it's
-# keys and values can be garbage collected.
-#
-#     require 'weakref'
-#
-#     class WeakHash < Hash
-#       def []= key, obj
-#         super WeakRef.new(key), WeakRef.new(obj)
-#       end
-#     end
-#
-# This is just a simple implementation, we've opened the Hash class and changed
-# Hash#store to create a new WeakRef object with +key+ and +obj+ parameters
-# before passing them as our key-value pair to the hash.
-#
-# With this you will have to limit your self to String keys, otherwise you
-# will get an ArgumentError because WeakRef cannot create a finalizer for a
-# Symbol. Symbols are immutable and cannot be garbage collected.
-#
-# Let's see it in action:
-#
-#   omg = "lol"
-#   c = WeakHash.new
-#   c['foo'] = "bar"
-#   c['baz'] = Object.new
-#   c['qux'] = omg
-#   puts c.inspect
-#   #=> {"foo"=>"bar", "baz"=>#<Object:0x007f4ddfc6cb48>, "qux"=>"lol"}
-#
-#   # Now run the garbage collector
-#   GC.start
-#   c['foo'] #=> nil
-#   c['baz'] #=> nil
-#   c['qux'] #=> nil
-#   omg      #=> "lol"
-#
-#   puts c.inspect
-#   #=> WeakRef::RefError: Invalid Reference - probably recycled
-#
-# You can see the local variable +omg+ stayed, although its reference in our
-# hash object was garbage collected, along with the rest of the keys and
-# values. Also, when we tried to inspect our hash, we got a WeakRef::RefError.
-# This is because these objects were also garbage collected.
 
 class WeakRef < Delegator
 

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

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