扩展与嵌入Perl:从基础到实践
1. 扩展Perl的自由度
在扩展Perl时,有几个关键的地方可以插入代码,以帮助XS和SWIG为脚本程序员生成流畅的接口:
- Perl模块 :到目前为止,这些工具生成的Perl模块仅用于启动C代码,但它也可以包含一些自定义子例程。例如,之前“修改参数”部分的XS示例可以很容易地在Perl空间中实现。
- 类型映射(Typemaps) :提供代码片段,用于在Perl和C数据类型之间进行转换。
- 接口文件中的包装代码 :CODE和PPCODE指令允许插入各种自定义转换任务。在SWIG中,可以内联自定义C代码,示例如下:
%module FunMath
%inline %{
int factorial(int n){return (n == 1) ? 1 : n *(n -1)};
%}
2. 分形之旅:曼德勃罗集与绘图算法
在介绍分形之前,我们先假设你已经了解复数。一个复数 ( a + bi ) 由实部 ( a ) 和虚部 ( b ) 组成,它们共同构成了图上的一个点。
考虑表达式 ( z = z^2 - 1 ),其中 ( z ) 是一个复数。我们从一个复数 ( z_0 ) 开始并绘制它,然后将其代入上述表达式以生成一个新的复数并绘制该数。重复这个过程20或30次,我们会发现不同的 ( z_0 ) 起始值会导致该序列要么趋于无穷大,要么局限在一个边界内。所有导致有界序列的 ( z_0