zoukankan      html  css  js  c++  java
  • Lua for学习

    在Lua中for语句跟其他语言的for类似,语法上有一点点区别。Lua的for语句有两种:数字型和泛型

    数字型:

     
    1. for var=exp1,exp2,exp3 do  
    2.     <执行体>  
    3. end  

    var从exp1变化到exp2,每次变化以exp3为步长递增var,并执行一次“执行体”。exp3是可选的,如果不指定,默认为1。例如

    1. for i=1,f(x) do print(i) end  
    2. for i=10,1,-1 do print(i) end  


    for的三个表达式在循环开始前一次性求值,以后不再进行求值。比如上面的f(x)只会在循环开始前执行一次,其结果用在后面的循环中。

    可以验证如下:

    1. #!/usr/local/bin/lua  
    2. function f(x)  
    3.     print("function")  
    4.     return x*2   
    5. end  
    6. for i=1,f(5) do print(i)  
    7. end  

    输出:

    1. function  
    2. 1  
    3. 2  
    4. 3  
    5. 4  
    6. 5  
    7. 6  
    8. 7  
    9. 8  
    10. 9  
    11. 10  

    可以看到 函数f(x)只在循环开始前执行一次。

    泛型:泛型for循环通过一个迭代器函数来遍历所有值,类似java中的foreach语句


     
    1. --打印数组a的所有值  
    2. for i,v in ipairs(a) do print(v) end  

    i是数组索引值,v是对应索引的数组元素值。ipairs是Lua提供的一个迭代器函数,用来迭代数组。

    例如

    1. #!/usr/local/bin/lua  
    2. days = {"Suanday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"  
    3. }  
    4. for i,v in ipairs(days) do  print(v) end   

    输出


    1. Suanday  
    2. Monday  
    3. Tuesday  
    4. Wednesday  
    5. Thursday  
    6. Friday  
    7. Saturday  

    关于迭代器,以后再写。

    打完收工

  • 相关阅读:
    Android——inflate 将一个xml中定义的布局找出来
    Android——显示单位px和dip以及sp的区别
    StrategyPattern (策略模式)
    Flyweight(享元模式)
    ComponentPattern (组合模式)
    Java子类属性继承父类属性
    BridgePattern(桥接模式)
    FacadePattern(门面模式)
    装饰者模式,适配器模式,代理模式区别
    DecoratorPattern(装饰器模式)
  • 原文地址:https://www.cnblogs.com/vanishfan/p/2875594.html
Copyright © 2011-2022 走看看