1

我正在尝试将以下 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!

这是不正确的。

javascript 片段应该如何在 Livescript 中编码?

4

2 回答 2

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

使用 prelude-ls 映射

于 2014-09-10T19:08:22.470 回答
0

实际上要么console.log cf!.2!console.log cf![2]!将在我的代码中工作。

我不喜欢使用命名函数。有没有更好的办法?

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

于 2014-09-08T19:58:15.033 回答