zoukankan      html  css  js  c++  java
  • lua简洁的功能(两)

    Lua中的函数带有词法定界第一类值。


    第一类值: 在Lua中,函数和其它值(数值,字符串)一样,函数能够被存放在变量中,也存放在表中, 能够作为函数的參数,还能够作为函数的返回值。
    词法定界:被嵌套的函数能够訪问他外部函数的变量。

    lua的函数也能够是匿名的,当我们提到函数名时,实际上是说一个指向函数的变量。

    闭包
    词法界定加上第一类函数是一个功能强大的概念。
    function sortbygrade(names, grades)
         table.sort(names, function(n1,n2)
              return grades[n1]>grades[n2]
         end)
    end
    在匿名函数内部grades称为是外部的局部变量或upvalue

    闭包在上下文环境中提供非常实用的功能。可作为高级函数的參数,可作为函数嵌套的函数(比方返回一个闭包),能够作为回调函数。利用闭包能够又一次定义某个函数,当别人调用某个函数时,调用到自定义的做了安全检查的函数,从而创建了一个安全的环境(沙箱)
    do
         local oldopen = io.open
         io.open = function(f,m)
              if access_ok(f,m) then
                   return oldopen(f,m)
              else
                   return nil, "access denied"
              end
         end
    end

    非全局函数
    函数作为table的域(大部分lua库函数使用这样的机制实现的。如io.read,math.sin)
    有3种语法方式:
    1.
    lib = {}
    lib.foo = function(x,y) return x+y end
    2.
    lib = {foo = function(x,y)return x+y end}
    3.
    lib = {}
    function lib.foo(x,y)
         return x+y

    end

    (完)

  • 相关阅读:
    IIS: Idle Timeout vs Recycle
    Window.location
    Web technology for developersSee Web APIsStorage
    Know the basics about NTFS permissions
    设置描述性弹性域某个字段为只读
    adb root
    nvme WVLOCK
    模拟器获取root权限
    Android模拟器emulator基本使用技巧和命令
    人工智能可以产生自主意识吗
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4555360.html
Copyright © 2011-2022 走看看