预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共42页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

iOS中Lua脚本的应用 Proteas 2012-07-23 proteas.wang@gmail.com 概要 •为什么要在应用中引入脚本? •为什么是Lua? •使用Lua开发应用的几种模式 •HelloLua •Meta-*:Lua与Objective-C集成的原理 •wax框架及其本身的一些问题 •Demos •其它 •目前没有解决的问题 为什么要在应用中引入脚本? •目前在进行开发应用时遇到的一些问题 –UI变化 –业务逻辑变化 –数据源不灵活 •如何处理UI变化? •如何处理业务逻辑变化? •如何解决数据源不灵活的问题? •ObjC语言的问题(编译执行) *Warning:使用PList作为配置文件时要谨 慎 为什么是Lua? •设计目标:嵌入到应用程序中(嵌入式) •体积小:100~200K •最快的脚本语言(非JIT) •简洁的API •动态语言 •DomainSpecificLanguage *编程语言的哲学: –编程语言是否都差不多? –Assembly,C,C++,Java/C#,Python, Ruby,CommonLisp –代码与数据的统一 使用Lua开发应用的几种模式 •Lua作为配置文件•宿主语言作为底层 ,为宿主语言应用库,Lua作为逻辑描 提供参数述 Lua 宿主语言 宿主语言 Lua CoronaSDK *LuaVS.PlistorXML HelloLua:什么是Lua •Lua是一种脚本编程语言,于1994年,由巴西里 约热内卢天主教大学的研究人员设计开发, “Lua”这个名字是葡萄牙语单词“月亮”。 •与一般脚本语言如PHP、Perl、JavaScript等不 同,Lua被称为是一种嵌入式脚本语言,Lua最著 名的应用是在暴雪公司的网络游戏魔兽世界中。 –《WorldofWarcraftProgramming》 •Lua最引人注目的特点: –以极小的体积和简单的语法提供相对全面的功能。 –以简洁的API实现与宿主语言最方便的接口。 •在服务器端也有着广泛的应用 HelloLua:为什么称为“嵌入式” •Lua语言可以独立进行编程,但这不是其主要的 使用方式。Lua虽然有动态、灵活的语法提供强 大的功能,但并不像Java、Python等一样有一 个完善的库(但仍存在一定数量的第三方库), 这不是缺陷,而是和其定位有关。 •Lua最典型的用法,是作为一个库,嵌入到其他 大型语言(称之为宿主语言)的应用程序之中, 为应用程序提供参数配置或逻辑描述等功能,带 来前所未有的灵活性。 •Lua常见的宿主语言有:C/C++,Java,.NET, 甚至脚本语言如PHP,Ruby等。 HelloLua:工作流程 •1.宿主语言建立Lua解释器对象。 •2.将宿主语言实现的Lua扩展(若有),如函数等 ,注册到Lua解释器中,供其使用。 •3.读入Lua源程序或预先编译后的Lua程序(可以 从文件、字符串、网络等任意来源)。 •4.执行读入的Lua程序。 HelloLua:lua_State HelloLua:变量 •Lua是动态语言,变量没有类型,存储的值才有类型 •var=4 •var=“hello” •var={x=10,y=20} •a,b=1,2 •八个基本类型 *点对 HelloLua:控制结构 •条件判断:if •迭代: –while –repeat –for HelloLua:控制结构-If •ifStatement ifa<=0then a=a+1Simpleifstatement end ifa<0then a=a+1 elseifa>0then a=a–1Nestedif-elsestatement else a=0 end HelloLua:控制结构-While •WhileLoop Luafirstteststhewhilecondition,ifitisfalse thentheloopends,otherwiseitexecutesthe body a={1,2,3,4,5} i=1 whilea[i]do print(a[i]) i=i+1 end Output:1,2,3,4,5 HelloLua:控制结构-Repeat •Repeat Repeat-untilstatementrepeatsitsbodyuntil theconditionistrue.Thisensuresthatthebody oftheloopisexecutedatleastonce. a=0 repeat a=a+1Thisblockalways pri