【发布时间】:2017-12-28 15:42:21
【问题描述】:
为这个蹩脚的问题道歉。我正在为我的 C++ 课程使用 Intellij Clion Student 许可版本。作为实现 UnsortedList 类的一部分,我们必须编写一个方法 isInTheList 来查看数组中是否存在元素。类实现如下
bool UnsortedList::isInTheList(float item) {
for (int i = 0; i < length; i++) {
if (data[i] == item) {
return true;
}
return false;
}
}
但是,ide 在data[i] == item 处显示一个彩色标记,并弹出一个提示
Statement can be simplified less... (Ctrl+F1)
This inspection finds the part of the code that can be simplified, e.g. constant conditions, identical if branches, pointless boolean expressions, etc.
对于之前检查列表是否为空的方法,我使用了以下简化形式而不是 if-else 语句。
bool UnsortedList::isEmpty() {
return (length == 0);
}
但是,现在涉及迭代,我无法在前者中提出简化的陈述。任何帮助深表感谢。谢谢。
【问题讨论】:
-
@GauravSehgal 非常相关。 OP 没有找到简化版本,因为他们错过了第二个
return在if之后执行 :) -
顺便说一句,CLion 不只是说表达式可以简化。它还提供为您简化它。如果您允许它这样做,您可能会意识到自己的错误。
-
我希望您也考虑一下,如果浮点数涉及任何类型的计算,它就不是精确值。所以 if (data[i] == item) 可能会失败,而是相互减去并且检查小于 lambda。
-
自以为是的吹毛求疵:
return语句的操作数周围的括号(通常)是不必要的、混乱的,并且可能(在像decltype(auto)这样的特殊情况下)导致不同的、可能违反直觉的结果。跨度> -
@file2cable 是这里:floating-point-gui.de
标签: c++ if-statement intellij-idea simplify