PHP的OOP

  • 在类中可以使用public(公有),protected(受保护)或 private(私有)来修饰属性和方法。如果不修饰默认是public。
  • 类中用var定义变量,var $name,使用方式$this->name
  • 构造函数function __construct(),析构函数function __destruct()
  • 继承class Child_Site extends Site,使用extends关键字
  • 实例化类

LuaFramework&PureMVC

LuaFramework是GitHub上一个基于tolua的人更新案例,里面除了tolua的功能外还使用了PureMVC的部分功能。这个文章是对代码中PureMVC部分的一些理解。

PureMVC

Structure

Model&Proxy

  • Model保存对Proxy对象的引用,Proxy负责操作数据模型,与远程服务通信存取数据。这样保证了Model层的可移植性。

Xlua摘要

加载机制

  • xlua在加载lua文件时会使用多个loader,LuaEnv的构造函数中有这么一段代码:
1
2
3
4
5
6
AddSearcher(StaticLuaCallbacks.LoadBuiltinLib, 2); // just after the preload searcher
AddSearcher(StaticLuaCallbacks.LoadFromCustomLoaders, 3);
#if !XLUA_GENERAL
AddSearcher(StaticLuaCallbacks.LoadFromResource, 4);
AddSearcher(StaticLuaCallbacks.LoadFromStreamingAssetsPath, -1);
#endif

Lua学习笔记:迭代和闭包

关系

  • 迭代是一种遍历一种集合中所有元素的机制,在遍历的过程中需要在每次成功之间保持一些状态,比如当前变量的index等。而闭包的机制恰好很适合迭代,因为闭包是一种可以访问外部嵌套环境中的变量的函数,而这个变量可以用来保持状态。在lua中闭包结构通常由闭包函数本身和一个创建该闭包函数的工厂函数组成。
  • 以下面代码为例,GetValue就是个工厂,它生产出一个闭包,这个闭包将状态保持在t和i这两个变量中。其实在我看来主要是i中。在循环中每次调用闭包(迭代器)都是在更新它的状态i。这段代码完美的展示了迭代器的概念,看完之后对于迭代的理解更近了一步。

Lua学习笔记:函数深入

闭包

  • lua中的函数都可以认为是闭包,只不过为了便于理解还是用了函数的概念。
  • lua中函数的返回值可以是匿名函数,也就是闭包。以下面的代码为例,提出一个概念:非局部的变量。在下面的代码中,匿名函数访问了一个变量i,它对于newCount来说是局部变量,对于匿名函数来说是既不是局部变量也不是全局变量,在lua中这个称谓非局部的变量
  • 在lua中一个闭包指的是一个函数和该函数所需要访问的非局部的变量。lua会把它们看做是一个整体,因此在下面的代码中多次允许c1和c2,会发现变量i是在递增的。这是因为c1 = newCount()这句代码相当于给c1赋值了一个闭包,它包含了i这个变量。因此多次执行相当于就是在反复执行一个对象,这样i就一直是原来那个i。

Lua学习笔记:高级概念

高级概念

  • 这部分中会记录一些lua语言中的高级概念和技术。

模块

概念

  • 从我的理解看,模块更像是一个类。但是因为lua中没有类的概念,模块的实现是依赖于table。
  • 一些公共或者私有的变量+函数组成了模块的主体,最后一个return module完成了基本的构造。其实这个return就是返回了这个table。
  • 具体实现看教程

Lua学习笔记:基本语法

初步印象

  • 语法和python、js这些很像,解释型语言、弱类型等等。写着舒服是真的。
  • while do\repeat until这样的语法其实真心不舒服,感觉在语法上有些累赘。大多数语言都是do while,但是它非要是repeat until,也是无语。
  • 我个人认为语法中的then和do设计的很混淆。比如if是和then,for是和do。从我对语言的理解上感觉可以统一用do或者then。
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×