如何在 Unity C# 中压缩此语句的 if 运算符
How to compact if operator for this statement in Unity C#
在"Unity"中我们经常调试控制台。
public bool printInConsole;
void Start()
{
if ( printInConsole ) Debug.Log("Starting and printing...");
}
我想使用 compact 来调用这个 Unity 函数吗?三元运算符。
如何使用 C# 在 Unity 中为此编写语句?
在你的情况下,因为你只想在条件满足时打印,所以你可以使用 if
块,不需要使用三元运算符。
if ( printInConsole )
Debug.Log("Starting and printing...");
if(printInConsole)?Debug.Log("Starting and printing..."): _you_else_condition_
如果您有几件事要记录,并且只想避免 "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_expression)。
- 三元运算符表达式必须 return 一个值,并且
Debug.Log()
returns 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");
因为我不是英国人,所以请你改进我的回答。
在"Unity"中我们经常调试控制台。
public bool printInConsole;
void Start()
{
if ( printInConsole ) Debug.Log("Starting and printing...");
}
我想使用 compact 来调用这个 Unity 函数吗?三元运算符。
如何使用 C# 在 Unity 中为此编写语句?
在你的情况下,因为你只想在条件满足时打印,所以你可以使用 if
块,不需要使用三元运算符。
if ( printInConsole )
Debug.Log("Starting and printing...");
if(printInConsole)?Debug.Log("Starting and printing..."): _you_else_condition_
如果您有几件事要记录,并且只想避免 "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_expression)。 - 三元运算符表达式必须 return 一个值,并且
Debug.Log()
returnsvoid
.
您可以发明一些疯狂的方法来将您的逻辑放入三元运算符中,例如将 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");
因为我不是英国人,所以请你改进我的回答。