Perl新手求教:如何传递可选参数?以PDF::API2的section方法为例
解决Perl中PDF::API2的section子例程可选参数传递问题
嘿,别发愁,我来给你把这个可选参数的传递逻辑讲明白!
先看你贴出来的section子例程代码,它的参数列表最后是%opts——这是个哈希变量,专门用来接收键值对形式的可选参数。也就是说,所有在必选参数之后的键值对,都会被自动打包进这个%opts里,然后在子例程内部传递给paragraph方法使用。
你当前的调用代码是:
$txt->section($str, $contentwidth,$heightmax);
要传递值为20的-indent参数,只需要在现有参数的后面追加-indent => 20这个键值对就行,修改后的代码如下:
$txt->section($str, $contentwidth, $heightmax, -indent => 20);
再给你补个小原理:Perl里当子例程用哈希变量(比如这里的%opts)接收末尾参数时,会把后续所有成对的参数(键和对应的值)自动转换成哈希结构。所以如果这个子例程还有其他可选参数,比如-align => 'left',你也可以用同样的方式一起追加:
$txt->section($str, $contentwidth, $heightmax, -indent => 20, -align => 'left');
这样%opts里就会包含(-indent => 20, -align => 'left')这些键值对,子例程调用$self->paragraph(...)时就会把这些参数一并传进去啦。
内容的提问来源于stack exchange,提问作者Yvonne
相关产品推荐
相关产品推荐

