给定一个 数组文字,我想创建一个哈希表,其中键是来自数组的元素,值是包含其他/剩余元素的数组。
输入:
[1, 2, 3]
输出:
{1=>[2, 3], 2=>[1, 3], 3=>[1, 2]}
如果我引入一个变量,这就很容易了:
arr = [1, 2, 3]
arr.map { |i| [i, arr - [i]] }.to_h
但是对于一个数组字面量,我能想到的唯一解决方案涉及到 instance_exec
或 instance_eval
,这似乎有些hackish:
[1, 2, 3].instance_exec { map { |i| [i, self - [i]] } }.to_h
我是否忽略了内置的方法或显而易见的解决方案?group_by
、combination
、permutation
和 partition
似乎都无法帮助。
instance_eval
? - Andrey Deineko[[1,2,3]] * 2
⇒ 现在你有一个副本 :) - Aleksei Matiushkintap
不会返回原始数组吗? - Stefan[1, 2, 3].tap { |a| a.map { |i| [i, a - [i]] }.to_h }
,将会... - Aleksei Matiushkin