Ruby 4.1 リファレンスマニュアル

singleton method Hash.ruby2_keywords_hash

ruby2_keywords_hash(hash) -> HashRuby 2.7.1 から[permalink][rdoc][edit]

hash を複製し、Module#ruby2_keywordsProc#ruby2_keywordsによる ruby2_keywords フラグを立てたハッシュを返します。

このメソッドはデバッグや調査、引数のデシリアライズのように本当に必要な場合のために用意されていて、普通のプログラムで使うことは想定されていません。

複製を返すため、元の hash にフラグは立ちません。

ruby 2.7.1 で追加されたため、ruby 2.7.0 では定義されていません。

[PARAM] hash:
ruby2_keywords フラグを立てる Hash を指定します。
[EXCEPTION] TypeError:
hash が Hash でない場合に発生します。
h = {k: 1}
p Hash.ruby2_keywords_hash?(h)       # => false

flagged = Hash.ruby2_keywords_hash(h)
p Hash.ruby2_keywords_hash?(flagged) # => true

# 元のハッシュにはフラグが立たない
p Hash.ruby2_keywords_hash?(h)       # => false
例: フラグを立てたハッシュは配列で渡してもキーワード引数になる
def foo(k: 42)
  k
end

p foo(*[Hash.ruby2_keywords_hash({k: 1})]) # => 1

foo(*[{k: 1}])                             # ~> ArgumentError

[SEE_ALSO] Hash.ruby2_keywords_hash?, Module#ruby2_keywords, Proc#ruby2_keywords