- static-type-inference
static-type-inference
这个编译过程非常重要,因为它寻找的是可能被转换为静态/基本类型的动态变量,底层编译器可以更好地对其进行优化。
下面的代码使用一组动态变量来执行一些数学计算:
public function someCalculations(var a, var b){var i = 0, t = 1;while i < 100 {if i % 3 == 0 {continue;}let t += (a - i), i++;}return i + b;}
变量a, b, i仅用于数学运算,因此可以利用其他编译通道转换为静态变量。 在此传递之后, 编译器会自动将此代码重写为:
public function someCalculations(int a, int b){int i = 0, t = 1;while i < 100 {if i % 3 == 0 {continue;}let t += (a - i), i++;}return i + b;}
通过禁用此编译过程, 所有变量都将维护最初声明它们的类型, 而不进行优化。
