我正在寻找有关如何将代码转换为 C# for Unity 中的表达式的想法。我们有这个基本的陈述列表:
简单的陈述:
- 分配:A:= A + 5
- 调用:清除屏幕()
- 返回:返回 5;
复合语句:
- if-statement: if A > 3 then WRITELN(A) else WRITELN("NOT YET"); 结尾
- switch-statement: switch (c) { case 'a': alert(); 休息; 案例'q':退出();休息; }
- while-loop: while NOT EOF DO 开始 READLN 结束
- 做循环:做{计算(&i); } 而 (i < 10);
- for-loop: for A:=1 to 10 do WRITELN(A) end
替换这些语句的表达式应该链接起来,例如使用 And 运算符 (expression1 && expression2 && .. expresionN),因此执行顺序得到尊重。还允许使用 ?: 运算符。
任务
如果我们有这样的声明:
int a = 100;
可以转换为:
((a = 100) == a)
但并不完美,因为比较没有在 IL 代码中优化。我也试过:
((a = 100) is int)
这会引发警告,比较已优化,但分配也已删除。任何其他仅在 IL 代码中产生分配的想法?
称呼
调用会自动转换为表达式,对吗?嗯,不完全是。你如何链接一个 void 函数?
此外,如果您通过引用传递参数,您将需要表达式外部的变量。
返回
这个是直接转换的:
return 5;
(5)
If 和 Switch 语句
?: 运算符替换它们:
if (a == 5) { b = "yes"; } else { b = "no"; }
((a == 5) ? "yes" : "no")
While、Do 和 For 循环
如果迭代次数是固定的,则可以在此处使用循环展开。