我试图检查得分并输出谁赢了。黑> 0,白色< 0,并且领带是== 0.如果没有再次调用我的函数或使用其他变量,我应该怎么做才能看到GetValue(board)== 0?
GetValue(board) > 0 ? cout << "Black wins" : cout << "White wins";
答案 0 :(得分:2)
为什么不想使用变量?如果这样做,您可以使用复合三元运算符:
int val = GetValue(board);
cout << val == 0 ? "Tie" : (val < 0 ? "White wins" : "Black wins");
编辑:但这不是一条线,是吗?真正的一个班轮,由lambda功能提供。
它还假设GetValue
返回一个int。并且需要using namespace std
来简洁。
cout << vector<string>({"White wins", "Tie", "Black Wins"})[([](int x){return(0<x)-(x<0)+1;}(GetValue(board)))];
(也不要实际使用)
答案 1 :(得分:1)
如果您想通过一个函数调用输出得分,您可以执行以下操作:
cout << msg[ GetValue(board) + 1] << endl;
其中:
msg[0] = "White Wins";
msg[1] = "Tie";
msg[2] = "Black Wins";
这假定GetValue
返回-1,0或1;
答案 2 :(得分:1)
std::string win_message(int const &x)
{
if ( x == 0 ) return "Tie";
if ( x < 0 ) return "Black wins";
return "White wins";
}
// ...
cout << win_message( GetValue(board) );