+ -
当前位置:首页 → 问答吧 → 如何创建这样的子例程

如何创建这样的子例程

时间:2011-03-20

来源:互联网

也许这个需求不能实现,但我觉得Perl十分灵活和强大,不知道有没有办法。我需要创建如下的子例程:

Sub myFunction("String") Block

也既是说,这个函数包含两个参数,第一个是一个字符串,第二个是一个函数块。 有点类似于 if 语句。 我试着用函数原型的方式来定义,如:sub myFuc ($&) ..., 但不成功。是否有别的方法?


望高手给予解答或提示。

作者: fttwho   发布时间: 2011-03-20

本帖最后由 zhlong8 于 2011-03-20 22:17 编辑

BLOCK 只有在第一个参数的时候才能省略 sub 直接用大括号常用的方法是再定义个辅助的函数,比如 as 之类。可以去看看 Try::Tiny 这个模块。类似 Moose 的类型系统中有这么用的,一样的原理
  1.   subtype 'ModernDateTime'
  2.       => as 'DateTime'
  3.       => where { $_->year() >= 1980 }
  4.       => message { 'The date you provided is not modern enough' };
复制代码
不过这都是小技巧而已,真正 NB 的是 Devel::Declare 你去 cpan 看看文档,Moose 有个模块用它实现了 class 关键字

作者: zhlong8   发布时间: 2011-03-20

又来学习学习

作者: b86873564   发布时间: 2011-03-20