先日activesupportのObject#instance_valuesメソッドのソースコードを読んでいたら
Hashについてわからないことがあったので質問させていただきます.

Hash[] #=> {}
Hash[[]] #=> {}
Hash[[[]]] #=> invalid number of arguments
Hash[[[1,2],[3,4]]] #=> {1=>2, 3=>4}

上に挙げたこれらのコードの挙動を教えていただけますでしょうか.

下記はactivesupportのObject#instance_valuesのソースコードです.

def instance_values
  Hash[instance_variables.map { |name| [name[1..-1], instance_variable_get(name)] }]
end

https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/instance_variables.rb