此代碼設置的默認值,當一個不存在的密鑰被訪問時返回。
在這種特定情況下,如果給定的key
是整數的表示形式,則默認設置爲在Array
內返回給定key
。
hash = Hash.new do |_, key|
[key] if /^\d+$/ === key
end
hash["foo"].inspect # => nil
hash[123].inspect # => nil
hash["123"].inspect # => ["123"]
的正則表達式匹配的一些例子:
/^\d+$/ === 123 # => false
/^\d+$/ === "a123" # => false
/^\d+$/ === "123a" # => false
/^\d+$/ === "1.23" # => false
/^\d+$/ === "123" # => true
而對於一個默認值另一個(簡單)例如:
hash = Hash.new { |_, key| "this key does not exist" }
hash["foo"] # => "this key does not exist"
hash["foo"] = "bar"
hash["foo"] # => "bar"
關於塊參數命名: 你能說出第一個參數是任何你喜歡的,但是一些開發者喜歡命名一個未使用的塊運算符_
。乍一看,這種方式很明顯,你不關心這個參數。