我在RailsCast中找到了这段代码:
def tag_names
@tag_names || tags.map(&:name).join(' ')
end
Run Code Online (Sandbox Code Playgroud)
什么是(&:name)中map(&:name)意味着什么?
这是排序哈希并返回哈希对象(而不是数组)的最佳方法:
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) 当存在不使用的块或局部变量时,有时人们*会用它来标记,有时候用_.
{[1, 2] => 3, [4, 5] => 6}.each{|(x, *), *| p x}
{[1, 2] => 3, [4, 5] => 6}.each{|(x, _), _| p x}
{[1, 2, 3], [4, 5, 6]}.each{|*, x, *| p x}
{[1, 2, 3], [4, 5, 6]}.each{|_, x, _| p x}
def (x, *), *; p x; end
def (x, _), _; p x; end
def *, x, *; p x; end
def _, x, _; p x; end
Run Code Online (Sandbox Code Playgroud)
他们之间有什么区别,我什么时候应该使用哪个?当需要将多个变量标记为未使用时,如上例所示,是否更好?
我的哈希看起来如下.我希望输出是相同的哈希形式,但根据价格排列哈希.
{
1=>{
"name"=>"Mark",
"date"=>"27/08/2015",
"bed"=>"3",
"furnish"=>"Fully",
"size"=>"10",
"price"=>790000
},
2=>{
"name"=>"Mark",
"date"=>"27/08/2015",
"bed"=>"3",
"furnish"=>"Fully",
"size"=>"10",
"price"=>720000
},
3=>{
"name"=>"Mark",
"date"=>"27/08/2015",
"bed"=>"3",
"furnish"=>"Fully",
"size"=>"10",
"price"=>750000
},
4=>{
"name"=>"Mark",
"date"=>"27/08/2015",
"bed"=>"3",
"furnish"=>"Fully",
"size"=>"10",
"price"=>710000
}
}
Run Code Online (Sandbox Code Playgroud)
我读过如何按数值对Ruby Hash进行排序?但它只是一个嵌套的哈希.对我如何实现这一目标完全无能为力.如果你们中的任何一个愿意帮助我,将不胜感激.