我正在尝试将一些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)
你真的不需要自己map和array方法.已经有相同的功能可用,您只需添加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)
| 归档时间: |
|
| 查看次数: |
895 次 |
| 最近记录: |