zoukankan      html  css  js  c++  java
  • Chapter 16_5 单一方法

      当一个对象只有一个方法时,可以不用创建接口table,但是要将这个单独的方法作为对象来返回。可以参考迭代器那一节,是如何构造一个迭代器函数,那个函数将状态保存为closure。

      一个具有状态的迭代器是一个单一方法对象

      单一方法对象还有一种情况,若这个方法是一个调度(dispatch)方法,它根据某个参数来完成不同的操作:

    function newObject(value)        --value is upvalue
        return function(action, v )
            if action == "get" then return value
            elseif action == "set" then value = v
            else error("invalid action")
            end
        end
    end

    如下所示:

    d = newObject(0)
    print(d("get"))        --> 0
    d("set",10)
    print(d("get"))        --> 10

    每个对象都用一个closure,这比都用一个table更高效。虽然无法实现继承,却拥有了完全的私密控制。

    访问一个对象状态只有一个方式,那就是通过它的单一方法。

    以上内容来自:《Lua程序设计第二版》和《Programming in Lua  third edition 》

  • 相关阅读:
    linux 进程操作脚本
    go 项目监听重启
    go 小题
    beego 基础
    beego 接口开发
    beego 安装
    mongo curd
    html的学习(一)
    ssl
    java编码的学习
  • 原文地址:https://www.cnblogs.com/daiker/p/5883887.html
Copyright © 2011-2022 走看看