这是排序哈希并返回哈希对象(而不是数组)的最佳方法:
h = {"a"=>1, "c"=>3, "b"=>2, "d"=>4}
# => {"a"=>1, "c"=>3, "b"=>2, "d"=>4}
Hash[h.sort]
# => {"a"=>1, "b"=>2, "c"=>3, "d"=>4}
Run Code Online (Sandbox Code Playgroud) 我有一个简单的数组:
arr = ["apples", "bananas", "coconuts", "watermelons"]
Run Code Online (Sandbox Code Playgroud)
我还有一个函数f
,它将对单个字符串输入执行操作并返回一个值.这个操作非常昂贵,所以我想在hash中记住结果.
我知道我可以用这样的东西制作所需的哈希:
h = {}
arr.each { |a| h[a] = f(a) }
Run Code Online (Sandbox Code Playgroud)
我想做的是不必初始化h,这样我就可以这样写:
h = arr.(???) { |a| a => f(a) }
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?