脚本专栏 
首页 > 脚本专栏 > 浏览文章

Lua返回一个Closures函数实例

(编辑:jimmy 日期: 2025/5/15 浏览:3 次 )

复制代码 代码如下:
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中使用.和:调用函数的区别
下一篇:vs2012 error c4996: This function or variable may be unsafe
一句话新闻
高通与谷歌联手!首款骁龙PC优化Chrome浏览器发布
高通和谷歌日前宣布,推出首次面向搭载骁龙的Windows PC的优化版Chrome浏览器。
在对骁龙X Elite参考设计的初步测试中,全新的Chrome浏览器在Speedometer 2.1基准测试中实现了显著的性能提升。
预计在2024年年中之前,搭载骁龙X Elite计算平台的PC将面世。该浏览器的提前问世,有助于骁龙PC问世就获得满血表现。
谷歌高级副总裁Hiroshi Lockheimer表示,此次与高通的合作将有助于确保Chrome用户在当前ARM兼容的PC上获得最佳的浏览体验。