From 9dab3c51fd5e18b18838e0da4ee20f313d25ba43 Mon Sep 17 00:00:00 2001 From: OKURA Masafumi Date: Mon, 6 Apr 2026 18:34:36 +0900 Subject: [DOC] Mention `Hash#default_proc=` affects Proc object from `Hash#to_proc` ```ruby h = {foo: 0, bar: 1, baz: 2} proc = h.to_proc proc.call(:nosuch) # => nil h.default_proc = proc {'wow!'} # This affects `proc` immediately proc.call(:nosuch) # => 'wow!' ``` This behavior is a bit of surprise to me, and I could not find any mention to this behavior in current doc. --- hash.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hash.c b/hash.c index 773df7e78d..79dbd5d8e9 100644 --- a/hash.c +++ b/hash.c @@ -5012,6 +5012,8 @@ hash_proc_call(RB_BLOCK_CALL_FUNC_ARGLIST(key, hash)) * proc.call(:foo) # => 0 * proc.call(:bar) # => 1 * proc.call(:nosuch) # => nil + * h.default_proc = proc { |hash, key| "Missing key: #{key}" } # This affect the existing proc object + * proc.call(:nosuch) # => "Missing key: #{nosuch}" * * Related: see {Methods for Converting}[rdoc-ref:Hash@Methods+for+Converting]. */ -- cgit v1.2.3