我有一个像这样打印的变量:
{:type1=>:poor, :type2=>:avg, :type3=>:best}
我想迭代这个哈希并根据以下规则打印出最终值
:best
,则最终值为best
:avg
且没有best
,则最终值为avg
poor
基本上最强的胜利。
我试过以下
def final_value(values)
val = "poor"
values.each do |key, val|
end
val
end
答案 0 :(得分:5)
使用哈希的has_value?方法
val = :poor;
val = :avg if values.has_value?(:avg);
val = :best if values.has_value?(:best);
val
答案 1 :(得分:0)
有这样的事情吗?
final_val = :poor
values.each() do |val|
if val = :avg && final_val = :poor
final_val = :avg
end
if val = :best && final_val = :avg
final_val = :best
end
end
return final_val
答案 2 :(得分:0)
您可以按照以下方式实现所需:
def final_value(values)
val = :poor;
values.each do|k, v|
if(v==:best)
val=:best;
break;
elsif(val==:poor && v==:avg)
val=:avg;
end
end
puts "Final value is: "+val.to_s;
end
values = {:type1=>:poor, :type2=>:avg, :type3=>:best};
final_value(values)
答案 3 :(得分:0)
def compare(h,val)
m = ((h.has_value?(val) and val != :poor) ? ((val == :best or h.has_value?(:best))? :best : :avg ) : :poor)
end
h = {:type1=>:poor, :type2=>:avg, :type3=>:best}
p compare(h,:avg) #:best
p compare(h,:trr) #:poor
p compare(h,:best) #:best