C#相当于Lambda

Mun*_*oid 1 c# lambda

我正在尝试将一些JS转换为C#,我得到了这篇文章,但是无法弄清楚C#的等价物是什么.希望有人能指出我正确的方向?

我只需要帮助这两个函数的内容.$ iterator在另一个地方编码,但我猜测以下代码的C#版本不需要它.如果你需要我添加它,我可以.

这些函数被调用的上下文是:

var centers = Lambda.array(Lambda.map(this.hexes,function(hex) {
            return me.hexToCenter(hex);
        }));
Run Code Online (Sandbox Code Playgroud)

功能是:

var Lambda = function() { }
Lambda.array = function(it) {
    var a = new Array();
    var $it0 = $iterator(it)();
    while( $it0.hasNext() ) {
        var i = $it0.next();
        a.push(i);
    }
    return a;
}
Lambda.map = function(it,f) {
    var l = new List();
    var $it0 = $iterator(it)();
    while( $it0.hasNext() ) {
        var x = $it0.next();
        l.add(f(x));
    }
    return l;
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*zek 6

你真的不需要自己maparray方法.已经有相同的功能可用,您只需添加using System.Linq;到文件的顶部,您就可以使用两者Select,这是一种投影方法,并ToArray从您的集合中创建了一个数组.它们都是设置的扩展方法IEnumerable<T>,因此您几乎可以在任何集合中使用它们.

var centers = hexes.Select(x => me.hexToCenter(x)).ToArray();
Run Code Online (Sandbox Code Playgroud)

是一个相当于你的JavaScript代码:

var centers = Lambda.array(Lambda.map(this.hexes,function(hex) {
            return me.hexToCenter(hex);
        }));
Run Code Online (Sandbox Code Playgroud)