Lua返回一个Closures函数实例

代码如下:

do

 function Button(x)

  print("Call Button");

  x.action();

  print(x.label);

 end

 function add_to_display(digit)

  print("Call add_to_display");

  print(digit);

 end


 function digitButton(digit)

  return Button{//return a table and the function(Button), it means that the Button receives the param(the table{...})

      label = tostring(digit),

      action = function()

         print("digit: ", digit);

         add_to_display(digit);

         end

       }


 end


 local fun = digitButton(3);


end

写个简单的迭代器:

代码如下:

do

 t_ = {9, 2, 3, 4};

 function values(t)

  local i = 0;

  return function()

     i = i + 1;

     return t[i];

    end

 end


 iter = values(t_);


 while true do

  local element = iter();

  if element == nil then

   break;

  end


  print(element);

 end


end

lua

相关推荐