0

我有一个像这样打印的变量:

{: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
4

4 回答 4

5

使用Hash的has_value?方法。

val = :poor;
val = :avg  if values.has_value?(:avg);
val = :best if values.has_value?(:best);
val
于 2013-04-08T17:58:03.013 回答
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
于 2013-04-08T17:56:04.417 回答
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)
于 2013-04-08T18:05:52.267 回答
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
于 2013-04-08T18:22:12.640 回答