如何在Unity C#中为该语句压缩if运算符
本文关键字:语句 压缩 if 运算符 Unity | 更新日期: 2023-09-27 18:01:14
在"Unity"中,我们经常调试到控制台。
public bool printInConsole;
void Start()
{
if ( printInConsole ) Debug.Log("Starting and printing...");
}
我想用compact调用这个Unity函数?三元运算符
如何在Unity中使用C#为此编写声明?
在您的情况下,因为您只想在条件满足时打印,所以您可以使用if
块,不需要使用三元运算符。
if ( printInConsole )
Debug.Log("Starting and printing...");
如果你有几件事要记录,而你只是想避免"If/log"循环,你可以创建一个方法:
private void LogIt(string msg)
{
if (printInConsole)
Debug.Log(msg);
}
然后,每当您想记录一些内容时,只需致电LogIt()
即可。
TLDR使用if:
if ( printInConsole ) Debug.Log("Starting and printing...");
C#中三元表达式的语法如下:
condition ? first_expression : second_expression;
在您的场景中,不能使用三元运算符,因为:
- 它需要两个表达式:一个用于
condition
是true
(first_expression(的情况,另一个用于false
(second_express(的情况 - 三元运算符表达式必须返回一个值,而
Debug.Log()
返回void
您可以发明一些疯狂的方法来将逻辑拟合到三元运算符中,比如将Debug.log()
调用封装在Action
委托中,但这将是浪费,因为三元运算符的全部目的是使代码更简单。。。
不,没有办法使if语句比更紧凑
if ( printInConsole ) Debug.Log("Starting and printing...");
正如">Rahul"所指出的,一种更好的视觉方式是:
if ( printInConsole )
Debug.Log( "Starting and printing..." );
正如">Genos"所提到的,使用C#紧凑三元运算符是不正确的,例如:
printInConsole ? Debug.Log("Starting and printing...");
因为它需要第二个else表达式。
可以在函数内部执行,但结果并不更紧凑、简单或可读
Debug.Log(printInConsole ? "Running and printing..." : "'n");
">itsme86",我的传统解决方案是创建一个特定的紧凑函数方法。通过这种方式,调用函数更加紧凑。
Mss("Starting and printing..." );
在我的情况下,完整的Unity代码示例将是:
public bool printInConsole;
void Start()
{
Mss("Starting and printing..." );
}
private void Mss(string consoleMessage)
{
if (printInConsole)
Debug.Log(consoleMessage + "'n");
}
另一种解决方案是为键盘按钮分配一个要打印的自定义宏:
if ( printInConsole )
Debug.Log( "" + "'n");
既然我不是英国人,请你改进我的答案
if(printInConsole)?Debug.Log("Starting and printing..."): _you_else_condition_