Javascript to Livescript转换;问题与js2ls?

时间:2014-09-08 19:52:18

标签: javascript livescript

我正在尝试将以下JS教科书示例转换为Livescript:

   function cf(){
       var result = new Array();
       for (var i=0; i < 10; i++) {
         result[i] = function(num){
           return function(){
             return num;
           };
          }(i);
       }
       return result;
    }
    console.log( cf()[2]() );

我的尝试是这样的:

cf = ->
  res=[]
  for i in [ 0 til 10 ]
    f = (num) ->
      ->
        num
    res[i] = f(i)
  res

console.log cf! . [3]!

然而,lsc在最后一行犹豫不决。

我尝试了http://js2ls.org/public/提供了这个Livescript输出(来自第一个javascript片段):

cf = ->
  result = new Array
  i = 0
  while i < 10
    result[i] = (num) -> -> num
    i
    i++
  result

console.log cf!.2!

这是不正确的。

如何在Livescript中编码javascript片段?

2 个答案:

答案 0 :(得分:1)

cf = -> [0 to 9] |> map (i) -> -> i
cf!.2!

使用prelude-ls map

答案 1 :(得分:0)

实际上,console.log cf!.2!console.log cf![2]!都可以在我的代码中使用。

我不喜欢使用命名函数。还有更好的方法吗?

此外,奇怪的是js2ls似乎偶然发现了转换。