我知道Lambda和deleget很像,之前虽然也偶尔写lambda表达式,但也并不是很在意。今天做了遇到的一个情况发现labmbda的方便之处。
关于Lambda网上有很多讲解,不过看明白,不代表就能想起用(主要是一直不太喜欢,加上之前项目上不让写lambda)
起因是这样子:
void SetAllChildImage()
{
for (int i = 0; i < Heros.Count; i++)
{
var heroIcon = Heros[i].GetComponent<Image>();
//虽然在资源在异步加载,但是lamdba会把用到变量保存起来,存储在方法栈上直到调用。
//如果此时不用lambda,虽然也可以处理,但是回麻烦很多。
GetSprit(spriteName , (sprite) => {
heroIcon.sprite = sprite;
});
}
}
//这个方法主要是获取图集中的图片,不过此方法为异步的。即图集加载完成后,需要回调把图片传回来。
void GetSprit(string spriteName,Action<Sprite> callback )
{
...
}
虽然被人教训了,但是有了教训就要记录下来,这样之后才(教)能(训)成(别)长(人)。
在获得临时变量并且需要做操作的时候,lambda真心蛮好用呢。