C/C++的函数名和函数指针的关系剖析 观察者模式 http://www.cnblogs.com/Esfog/archive/2012/04/23/2467249.html最近在看观察者模式的时候,看到的一片,讲的很通俗,真的很通俗。在项目中使用的是lua,在观察者模式当中,是有一个事件ID和与这个事件ID绑定的函数(与其说是函数倒不如说是函数指针),这些全部存储在一个全局的对象的table当中,一个事件ID下绑定了很多的函数名(也就是函数指针),在触发了某个事件ID之后,只需要调用这个全局对象当中的一个触发函数,就可以循环触发与这个这个事件ID绑定的函
C#在unity上实现双指缩放 public class ZoomMap : UIWindow { public Image mOriginTexture; public Image mBaseSize; public Image mBg; public Image mSelectArea; Vector2 offsetPos; int min_x;//用于限制拖动图片的范围 int max_x; int
设计模式之命令模式 设计模式之命令模式这里主要是学习记录,也是刚在学,也在理解。感觉得清楚一件事情:命令模式的本质是解耦命令请求与处理。所以,接下来就是三个问题,怎么理解命令请求,怎么理解处理,怎么理解解耦命令请求与处理。为了解决这三个问题,我就顺着写一个例子,解释一下class Player {public: void Jump() { cout << "玩家跳跃" << endl; } void Going() { cout << "玩家前进" <&
正则表达式 正则表达式可以当做为通配符的增强版,帮我们去匹配指定规则的字符串限定符:操作的对象都是一个字符?:代表前面这个字符需要出现0次或者1次,就是前面这个字符可有可无可以看到既可以匹配单词use也可以匹配单词used*:匹配0个或者多个字符,代表前面的字符可以没有,也可以有很多或者一个+:匹配出现一次以上的字符可以看到之前*匹配的两个ac都消失了,因为b需要出现一次以上{}:需要指定匹配次数指定b出现的次数为5次指定b出现的次数为1,5之间指定b出现的次数为1次以上():对多个字
Lua学习--------封装继承多态 在这里插入代码片print("************面向对象************")print("************封装************")--面向对象 类 其实都是基于 table来实现的--元表相关的知识点Object = {}Object.id = 1function Object:Test() print(self.id)end--冒号 是会自动将调用这个函数的对象 作为第一个参数传入的写法function Object:new() --self 代表的
Lua学习--------元表 ***********元表************")print("************元表的概念************")--任何表变量都可以作为另一个表变量的元表--任何表变量都可以有自己的元表--当我们子表中进行一些特定操作时--会执行元表中的内容print("************设置元表************")meta = {}myTable = {}--设置元表函数--第一个参数 子表--第二个参数 元表(爸爸)setmetatable(myTable,me
Lua学习--------协程 print("************协同程序************")print("************协程的创建************")--常用方式-- coroutine.create()fun = function () print(123)endco = coroutine.create(fun)--协程的本质是一个线程对象print(co)print(type(co))--coroutine.wrap()co2 = coroutine.wrap(fun)
lua学习--------and和or print("************特殊用法************")print("************多变量赋值************")a,b,c = 1,"123",2print(a)print(b)print(c)--多变量赋值 如果后面的值不够 会自动补nil--如果后面的值多了 会自动省略a,b,c = 1,2print(a)print(b)print(c)--nilprint("************函数的多返回值************")functi
Lua学习-------多脚本执行 print("************多脚本执行************")print("************全局变量和本地变量************")--全局变量a = 1b = "123"for i = 1,2 do c= "唐老鸭"endprint(c)--本地变量(局部变量)的关键字 local for i = 1,2 do local d= "唐老鸭" print(d)endprint(d)fun = function () local tt = "12
Lua学习-------表的操作 print("************表的公共操作************")--表中 table提供的一些公共放法t1 = {{age = 1,name = "123"},{age = 2,name = "345"}}t2 = {name = "唐老鸭",sex = "男"}--插入--将t2插入到t1的后面table.insert(t1,t2)print(t1[3].sex)--删除指定元素--remove放法 传表进去 会移除最后一个索引的内容table.remove(t1
Lua学习-------类 print("************类************")--Lua中默认没有面向对象 需要自己实现--成员变量 成员函数student = { --年龄 age = 1, --性别 sex = true, --成长函数 Up = function () student.age = student.age + 1 print("我成长了") end, --学习函数 Learn= function () print("好好学习,天天向上") end, In
Lua学习------table实现字典 print("************复杂数据类型——表2************")print("************字典************")print("************字典的申明************")--字典是由键值对构成a = {["name"] = "唐老鸭" ,["age"] = 14 , ["1"] = 5}--访问当个变量 用中括号填键 来访问print(a["name"])print(a["age"])print(a["1"])--还可以.类似成
Lua学习------迭代器遍历 print("***********迭代器遍历*************")--迭代器遍历 主要是用来遍历表的--#得到长度 并不准确 一般不用#来遍历表a = {[0] = 1,2,[-1] = 3,4,5,[5]= 6}print("***********ipairs迭代器遍历*************")--ipairs遍历 还是从1开始往后遍历 小于等于0的值得不到--只能找到连续索引的键 如果中间断序 无法遍历出后面的内容for i,v in ipairs(a) do prin
Lua学习---------复杂数据类型table print("***********复杂数据类型table*************")--所有的复杂类型都是table(表)print("***********数组*************")a = {1,2,3,4,"123",true,nil}--Lua中索引从1开始print(a[1])print(a[5])print(a[6])print(a[7])--#是通用的获取长度的关键字--在打印长度的时候 空被忽略了 nil意味着数组结束 哪怕nil后还有数据--如果表中(数组
Lua学习-------------循环 print("***********循环语句*************")print("***********while循环语句*************")num = 0--while条件 do......endwhile num <= 5 do print(num) num = num + 1endprint("***********do while循环语句*************")num = 0--repeat .......until 条件(注意:条件是结束条件)
Lua学习-----函数 print("****************函数****************")--function 函数名()--end--a = function()--endprint("****************无参数无返回值****************")function F1() print("F1函数")endF1()--有点类似C#中的委托和事件F2 = function() print("F2函数")endF2()print("************
C#比较类的大小 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Collections;namespace practise_1{ class Program { class Person:IComparable { public
抽象类和抽象方法 * **抽象类**:用关键字sbstract来修饰的类 * **特点**: * 1.不能实例化对象 * 2.抽象类中既可以写静态的成员,也可以写非静态的成员 * 3.抽象类可以被其他类继承 * **用途**: * 一种规范,用来约束所有子类的某种行为 * * **抽象方法**:用关键字abstract修饰的方法就是抽象方法 * 1.抽象方法使用abstract修饰,只有声明,没有实现 * 2.抽象方法只能写在抽象类中 * (1)如果一个非抽象类继承自一个抽象类,那么子类必须实现父.
C#选择冒泡排序 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Sort{ class Program { //选择排序 class SelectSort { public void sort(int[] array)