装饰器简介 装饰器(Decorators)为我们在类的声明及成员上通过元编程语法添加标注提供了一种方式。 需要注意的是:装饰器是一项实验性特性,在未来的版本中可能会发生改变。 若要启用实验性的装饰器特性,你必须在命令行或tsconfig.json里启用experimentalDecorators编译 ...
分类:
其他好文 时间:
2017-07-12 21:29:22
阅读次数:
190
元编程不过是编程——经典必读作用域(绑定)改变作用域的关键字, 分别是module,class和def。我们称为作用域的门(scope gate)instance_eval以实例作用域执行代码class_eval以类定义作用域执行代码Kernel#eval方法,当前上下文中直接执行代码字符串inst... ...
分类:
其他好文 时间:
2017-07-04 09:44:56
阅读次数:
143
1 简介 boost是一个准C++标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化。 boost主要包含以下几个大类: 字符串及文本处理、容器、迭代器(iterator)、算法、函数对象和高阶编程、泛型编程、 模板元编程、预处理元编程、并发编程、数学相关、 ...
译注:这是一篇在Stack overflow上很热的帖子。提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解。他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要进行元编程。于是e ...
分类:
编程语言 时间:
2017-06-07 23:17:45
阅读次数:
303
基于模板元编程技术的跨平台C++动态链接载入库。通过模板技术,使用者仅需通过简单的宏,就可以使编译器在编译期自己主动生成载入动态链接库导出符号的代码,无不论什么额外的执行时开销。 extern "C" { typedef int(*Proc_fnTestDll)(); typedef const c ...
分类:
编程语言 时间:
2017-06-03 18:12:42
阅读次数:
193
yield所有的"方法(methods)"隐式跟上一个"块(block)"参数。块参数也可以明确给定,形式就是在参数前面加一个"&",比如 def fn(arg1, arg2, &block) end,其中的 &block 就是明确给定的块参数。块参数的动作,可以通过调用 call() 方法执行,还... ...
分类:
其他好文 时间:
2017-06-03 15:17:10
阅读次数:
335
1.概述 Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。 Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过 ...
分类:
其他好文 时间:
2017-06-02 18:55:45
阅读次数:
141
要求: 不使用乘除法。for、while 、if、else、switch、case、以及A?B:C三元表达式 求1+2+3+...+n 此题思路有多种,能够用多态、构造函数、递归、和模板元。 我在看到此题时第一个想到的是模板元编程。 构造函数解决比較暴力,仅仅须要定义一个class 然后实例化这个类 ...
分类:
其他好文 时间:
2017-04-25 17:03:31
阅读次数:
161
C++中模板的推导是在编译期由编译器完成的,因此,可以利用模板将一些预先知道递归次数的递归算法用模板编程实现,以此实现将计算从运行期提前到编译期。利用模板完成递归算法与通常模式的递归算法一样,需要递归的公式和递归的结束条件。在模板元编程中,递归的公式利用模板参数的嵌套依赖来实现,而递归的结束条件利用 ...
分类:
编程语言 时间:
2017-04-24 10:12:37
阅读次数:
170
1. TMP是什么? 模板元编程(template metaprogramming TMP)是实现基于模板的C++程序的过程,它能够在编译期执行。你可以想一想:一个模板元程序是用C++实现的并且可以在C++编译器内部运行的一个程序,它的输出——从模板中实例化出来的C++源码片段——会像往常一样被编译 ...
分类:
编程语言 时间:
2017-04-15 13:29:11
阅读次数:
305