Mono 升级细节
在 Unity 3 版本中,我们将 mono 运行从 1.2.5 升级至 2.6。在此基础之上,还有一些 JavaScript 和 Boo 改进。除了修复所有错误并对两个版本的 mono 进行改进之外,本页还列出了一些重点内容。
C# 改进
C# 3.5 和 C# 2.0 之间的区别基本包括:
变量类型推断。如需更多信息,请点击此处。
Linq。
Lambdas。如需更多信息,请点击此处。
JavaScript 改进
编译器现在加快了 4 倍。
“extends”不再用于接口,unity 脚本现有“执行 (implements)”用于该目的(如下);
新增消耗泛型类型支持,如泛型集合:
var list = new System.Collections.Generic.List.<String>();list.Add("foo");
新增匿名函数/封闭支持:
list.Sort(function(x:String, y:String) {return x.CompareTo(y);});
其中包含带参数类型推断和返回值的简单 lambda 表达式:
list.Sort(function(x, y) x.CompareTo(y));
函数类型:
function forEach(items, action: function(Object)) {for (var item in items) action(item);}
类型推断的 javascript 数组推导式:
function printArray(a: int[]) {print("[" + String.Join(", ", [i.ToString() for (i in a)]) + "]");}var doubles = [i*2 for (i in range(0, 3))];var odds = [i for (i in range(0, 6)) if (i % 2 != 0)];printArray(doubles);printArray(odds);
新增说明和执行接口支持:
interface IFoo {function bar();}class Foo implements IFoo {function bar() {Console.WriteLine("Foo.bar");}}
所有函数都是隐式的虚函数,因而 “virtual” 这个关键字已被弃用,而引入 “final” 这个关键字,允许非虚拟方法定义为:
final function foo() {}
值类型(结构)可以定义为类,从 System.ValueType 继承:
class Pair extends System.ValueType {var First: Object;var Second: Object;function Pair(fst, snd) {First = fst;Second = snd;}override function ToString() {return "Pair(" + First + ", " + Second + ")";}}
Boo 改进
Boo 升级至 0.9.4 版本。