欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Lua返回一个Closures函数实例

程序员文章站 2022-07-05 11:03:57
复制代码 代码如下: do  function button(x)   print("call button");  &nb...

复制代码 代码如下:

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