有没有一种方法可以更简洁地编写?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有一种方法可以更简洁地编写?相关的知识,希望对你有一定的参考价值。

是否可以更简洁地编写以下代码?

if ((count % 100 == 1) || (count % 100 == 21) || (count % 100 == 31)) return "рубль";
else if ((count % 100 == 41) || (count % 100 == 51) || (count % 100 == 61)) return "рубль";
else if ((count % 100 == 71) || (count % 100 == 81) || (count % 100 == 91)) return "рубль";
答案

您正在寻找以1count % 10 == 1)结尾的十进制表示形式的数字,除了那些以11(count % 100 != 11)结尾的十进制表示形式的数字,因此

if (count % 10 == 1 && count % 100 != 11)
   return "рубль";

不同地放置,

if ((count % 100 == 1) || (count % 100 == 21) || (count % 100 == 31)) return "рубль";
else if ((count % 100 == 41) || (count % 100 == 51) || (count % 100 == 61)) return "рубль";
else if ((count % 100 == 71) || (count % 100 == 81) || (count % 100 == 91)) return "рубль";

等效于

if (
   count % 100 ==  1 ||
// count % 100 == 11 ||   // Intentionally omitted.
   count % 100 == 21 ||
   count % 100 == 31 ||
   count % 100 == 41 ||
   count % 100 == 51 ||
   count % 100 == 61 ||
   count % 100 == 71 ||
   count % 100 == 81 ||
   count % 100 == 91
) {
   return "рубль";
}

这已经更具可读性,但是我们可以做得更好。

如果我们可以添加count % 100 == 11,则条件将更加统一,这可能会为简化开辟道路。因此,我们尝试一下。

if (count % 100 != 11) {
   if (
      count % 100 ==  1 ||
      count % 100 == 11 ||
      count % 100 == 21 ||
      count % 100 == 31 ||
      count % 100 == 41 ||
      count % 100 == 51 ||
      count % 100 == 61 ||
      count % 100 == 71 ||
      count % 100 == 81 ||
      count % 100 == 91
   ) {
      return "рубль";
   }
}

事实上,我们现在可以如下简化大条件:

if (count % 100 != 11) {
   if (count % 10 == 1) {
      return "рубль";
   }
}

最后,您可以通过对嵌套if语句的条件进行“与”操作来折叠它们。

if (count % 100 != 11 && count % 10 == 1)
   return "рубль";

更具可读性:

if (count % 10 == 1 && count % 100 != 11)
   return "рубль";
另一答案
for (int i = 1; i <= 91; i += 10)
    if (count % 100 == i)
        return "Please use english / Пожалуйста учи английский";

以上是关于有没有一种方法可以更简洁地编写?的主要内容,如果未能解决你的问题,请参考以下文章

有没有更简洁的方法来编写这个轮询循环?

lambda表达式

20个简洁的 JS 代码片段

20个简洁的 JS 代码片段

有没有一种更简洁的方法来获得第一次出现的东西?

使用Python爬虫技术获取动态网页数据简洁方法与实践案例