Skip to content

Commit 4d33fee

Browse files
authored
Merge pull request #2926 from kyanagi/hash-new-capacity
`Hash.new`の`capacity`の説明を追加
2 parents 98093a2 + 87f833e commit 4d33fee

1 file changed

Lines changed: 24 additions & 1 deletion

File tree

  • refm/api/src/_builtin

refm/api/src/_builtin/Hash

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,12 @@ alist = [[1,["a"]], [2,["b"]], [3,["c"]], [[4,5], ["a", "b"]]]
130130
hash = Hash[alist] # => {1=>["a"], 2=>["b"], 3=>["c"], [4, 5]=>["a", "b"]}
131131
#@end
132132

133+
#@until 3.4
133134
--- new(ifnone = nil) -> Hash
135+
#@end
136+
#@since 3.4
137+
--- new(ifnone = nil, capacity: 0) -> Hash
138+
#@end
134139

135140
空の新しいハッシュを生成します。ifnone はキーに対
136141
応する値が存在しない時のデフォルト値です。設定したデフォルト値は[[m:Hash#default]]で参照できます。
@@ -152,7 +157,16 @@ p h.default #=> [0, 1]
152157

153158
#@#デフォルト値の扱いには注意が必要です( [[trap:Hash]] )
154159

160+
#@since 3.4
161+
capacity を指定すると、指定した要素数を格納するのに充分なメモリをあらかじめ確保します。
162+
要素数の多いハッシュを構築する際にメモリの再配置やハッシュテーブルの再構築が不要となるため、
163+
パフォーマンスの改善が期待できます。
164+
#@end
165+
155166
@param ifnone キーに対応する値が存在しない時のデフォルト値です。
167+
#@since 3.4
168+
@param capacity 指定した要素数に相当するメモリをあらかじめ確保します。
169+
#@end
156170

157171
#@samplecode 例
158172
h = Hash.new([])
@@ -178,15 +192,24 @@ h[1] << 1
178192
#@end
179193
#@end
180194

195+
#@until 3.4
181196
--- new {|hash, key| ... } -> Hash
197+
#@end
198+
#@since 3.4
199+
--- new(capacity: 0) {|hash, key| ... } -> Hash
200+
#@end
182201
空の新しいハッシュを生成します。ブロックの評価結果がデフォルト値になりま
183202
す。設定したデフォルト値は[[m:Hash#default_proc]]で参照できます。
184203

185204
値が設定されていないハッシュ要素を参照するとその都度ブロックを
186205
実行し、その結果を返します。
187206
ブロックにはそのハッシュとハッシュを参照したときのキーが渡されます。
188207

189-
@raise ArgumentError ブロックと通常引数を同時に与えると発生します。
208+
#@since 3.4
209+
@param capacity 指定した要素数に相当するメモリをあらかじめ確保します。
210+
#@end
211+
212+
@raise ArgumentError ifnone などの位置引数とブロックを同時に与えると発生します。
190213

191214
#@samplecode 例
192215
# ブロックではないデフォルト値は全部同一のオブジェクトなので、

0 commit comments

Comments
 (0)