【php精品源码栏目提醒】:本文主要为网学会员提供“iOS中Lua脚本的应用 - 其它资料”,希望对需要iOS中Lua脚本的应用 - 其它资料网友有所帮助,学习一下!
iOS中Lua脚本的应用 Proteas 2012-07-23 proteas.wanggmail.com 概要 为什么要在应用中引入脚本? 为什么是 Lua ? 使用 Lua 开发应用的几种模式 Hello Lua Meta-: Lua 与 Objective-C 集成的原理 wax 框架及其本身的一些问题 Demos 其它 目前没有解决的问题为什么要在应用中引入脚本? 目前在进行开发应用时遇到的一些问题 – UI 变化 – 业务逻辑变化 – 数据源不灵活 如何处理 UI 变化? 如何处理业务逻辑变化? 如何解决数据源不灵活的问题? ObjC 语言的问题(编译执行) Warning:使用 PList 作为配置文件时要谨 慎为什么是 Lua ? 设计目标:嵌入到应用程序中(嵌入式) 体积小:100200K 最快的脚本语言(非 JIT) 简洁的 API 动态语言 Domain Specific Language 编程语言的哲学: – 编程语言是否都差不多? – Assembly,C,C,Java/C,Python, Ruby,Common Lisp – 代码与数据的统一使用 Lua 开发应用的几种模式 Lua作为配置文件 宿主语言作为底层 ,为宿主语言应用 库,Lua 作为逻辑描 提供参数 述 Lua 宿主语言 宿主语言 Lua Corona SDK Lua VS. Plist or XMLHello Lua:什么是 Lua Lua是一种脚本编程语言,于1994年,由巴西里 约热内卢天主教大学的研究人员设计开发, “Lua”这个名字是葡萄牙语单词 “月亮”。
与一般脚本语言如
PHP、Perl、JavaScript 等不 同,Lua被称为是一种嵌入式脚本语言,Lua最著 名的应用是在暴雪公司的网络游戏 魔兽世界 中。
– 《World of Warcraft Programming》 Lua最引人注目的特点: – 以极小 的体积和简单 的语法提供相对全面的功能。
– 以简洁 的API实现与宿主语言最方便 的接口。
在服务器端也有着广泛的应用Hello Lua:为什么称为“嵌入式” Lua语言可以独立进行编程,但这不是其主要的 使用方式。
Lua虽然有动态、灵活的语法提供强 大的功能,但并不像 Java、Python 等一样有一 个完善的库(但仍存在一定数量的第三方库), 这不是缺陷,而是和其定位有关。
Lua最典型的用法,是作为一个库,嵌入 到其他 大型语言(称之为宿主语言 )的应用程序之中, 为应用程序提供参数配置或逻辑描述等功能,带 来前所未有的灵活性。
Lua常见的宿主语言有:C/C,Java,.NET, 甚至脚本语言如
PHP,Ruby等。
Hello Lua:工作流程 1.宿主语言建立Lua解释器对象。
2.将宿主语言实现的Lua扩展(若有),如函数等 ,注册到Lua解释器中,供其使用。
3.读入Lua源程序或预先编译后的Lua程序(可以 从文件、字符串、网络等任意来源)。
4.执行读入的Lua程序。
Hello Lua:lua_StateHello Lua:变量 Lua 是动态语言,变量没有类型,存储的值才有类型 var 4 var “hello” var x 10 y 20 a b 1 2 八个基本类型 点对Hello Lua:控制结构 条件判断:if 迭代: – while – repeat – forHello Lua:控制结构-If if Statement if a 0 then a a – 1 Nested if-else statement else a 0 endHello Lua:控制结构-While While Loop Lua first tests the while condition if it is false then the loop ends otherwise it executes the body a 12345 i 1 while ai do printai i i 1 end Output: 12345Hello Lua:控制结构-Repeat Repeat Repeat-until statement repeats its body until the condition is true. This ensures that the body of the loop is executed at least once. a 0 repeat a a 1 This block always printa executes at least once until a 10 Output: 1234567891011Hello Lua:控制结构-Numeric Loop Numeric For Loop Evaluate to Initial condition Increment by for i1101 do printi end Output: 12345678910Hello Lua:控制结构-Generic Loop Generic For Loop – Allows you to traverse all values returned by an iterator function colors “red” “green” “blue” index value Iterator Function for iv in ipairscolors do printiv end Output: 1 red 2 green 3 blueHello Lua:函数 函数是第一类型 定义函数 function adda b cab return c end 调用 x add1 2 printx 输出:3Hello Lua:Closure Closures – A function which returns a function – Has full access to local variables – This allows Lua to implement functional programming function newCounter c1 newCounter local i 0 printc1 -- 1 printc1 -- 2 return function i i 1 c2 newCounter return i printc2 -- 1 end printc1 -- 3 printc2 -- 2 end Anonymous function UpValues:lobject.h231Hello Lua:数据结构-Table 创建:t 1 2,3, 4, 5 取值:t1 t2 从 1 开始索引 t applegreen orangeorange bananayellow t“apple” t“orange” t“banana” t 246 languageLua version5.1 Hello Lua:Meta Table t 1 2 3 mt setmetatablet mt 数据结构:lobject.h338348 如果不是开源代码呢?