有没有办法缩短这样的 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.4/jspdf.min.js"></script>
<div class="survey-results" id="lppresults">
<button id="generatereport">Download Report</button> TEST CONTENT
</div>
语句:
<击> if
修改:不便之处,敬请原谅。在我的手机上快速完成了。这是一个完整的例子:
这是我的连线四肢游戏的一部分。
if(x == 1 && y == 1 && z == 1) -> if((x && y && z) == 1) or if((x,y,z) == 1)
答案 0 :(得分:2)
实际上,如果你使用C++11
或更高,你可以做一些缩短:
#include <iostream>
#include <string>
#include <tuple>
int main() {
int x = 1;
std::string y = "Hello";
double z = 3.14;
if(std::make_tuple(x, y, z) == std::make_tuple(1, "Hello", 3.14))
std::cout << "Everything is okay." << std::endl;
else
std::cout << "Something went wrong." << std::endl;
return 0;
}
或者您的情况(如果您的变量类型为int
):
if(std::vector<int> { x, y, z } == std::vector<int> { 1, 1, 1 })
std::cout << "Everything is okay." << std::endl;
else
std::cout << "Something went wrong." << std::endl;
但请记住,当您必须同时测试多个输入时,这些技术会很方便,或者您必须为您的类型重载comparison operators。在你的例子中(正如评论所指出的那样)这是不必要的,x == 1 && y == 1 && z == 1
是微不足道的。
编辑完问题后,很明显您打算使用对象(std::string
)进行比较。在这种情况下,每次进行比较时将它们复制到std::tuple
或数组中将会发生严重的性能损失。
与if
语句中的表达式相比,不会产生显着的开销,您可以使用variadic templates,如下所示:
template<typename T, typename... Args>
bool equalToAll(T&& test, Args&&... args) {
bool result = true;
bool dummy[] { false, (result &= (test == args))... };
return (static_cast<void>(dummy), result);
}
// Usage:
// equalToAll(player, grid[i][j], grid[i + 1][j], grid[i + 2][j], grid[i + 3][j])
答案 1 :(得分:1)
如果要检查所有变量是否彼此相等,可以编写这种帮助
template <typename T>
bool all_equal(const std::initializer_list<T>& l) {
return std::equal(l.begin() + 1, l.end(), l.begin());
}
用法:
if (all_equal({a, b, c}))
答案 2 :(得分:-3)
如果您将int
数据存储在数组中,则可以执行包含检查并将if语句设置为单个条件。