Get rid of ugly if statements

后端 未结 25 2105
借酒劲吻你
借酒劲吻你 2020-12-02 05:59

I have this ugly code:

if ( v > 10 ) size = 6;
if ( v > 22 ) size = 5;
if ( v > 51 ) size = 4;
if ( v > 68 ) size = 3;
if ( v > 117 ) size = 2         


        
25条回答
  •  温柔的废话
    2020-12-02 06:38

    How about such approach:

    int getSize(int v) {
        int[] thresholds = {145, 117, 68, 51, 22, 10};
    
        for (int i = 0; i < thresholds.length; i++) {
            if (v > thresholds[i]) return i+1;
        }
        return 1;
    }
    

    Functionally: (Demonstrated in Scala)

    def getSize(v: Int): Int = {
      val thresholds = Vector(145, 117, 68, 51, 22, 10)
      thresholds.zipWithIndex.find(v > _._1).map(_._2).getOrElse(0) + 1
    }
    

提交回复
热议问题