用Devel :: Declare创建一个新的Perl关键字
发布时间:2020-12-15 22:00:01 所属栏目:大数据 来源:网络整理
导读:我试图用 Devel::Declare创建关键字时遇到麻烦.在这件事上没有很多的例子和教程. 我的宠物项目是创建一个名为“做的”的新关键字,其类似于Ruby的做法,如下所示: my @arr = qw/foo bar baz/;@arr doing $x { print "x is $x";}; 我的想法是把它变成一个为我
我试图用
Devel::Declare创建关键字时遇到麻烦.在这件事上没有很多的例子和教程.
我的宠物项目是创建一个名为“做的”的新关键字,其类似于Ruby的做法,如下所示: my @arr = qw/foo bar baz/; @arr doing $x { print "x is $x"; }; 我的想法是把它变成一个为我的$x(@arr){…}语句与Devel :: Declare解析钩子.我不知道这是否可行. 我发现的大多数例子(从Devel::Declare测试目录)都是用于创建一个方法样式的关键字. 我会感谢一些关于如何开始的指针,或者关键的功能,以便能够处理,或现有的代码为我的基础. 解决方法
> Devel :: Declare不会让你收回已经解析的内容.如果你把关键字做成一个关键字,那么@arr在做…仍然需要转换成以@arr开头的东西,这似乎是一个相当大的障碍.
>因为Devel :: Declare的功能,它的魔法就会受到限制 – 它只能以特定的方式受到限制 – 它只允许你声明一个看起来像是subs的名字的关键字,在Perl会寻找一个sub的名字.它不会让你把任意的操作符放在你喜欢的地方.事实上,它可以用最少的扭曲,在你有关键字somestuff {…}的情况下,它可以变成一个简单的关键字调用(一些其他的东西和一个可能转换的子{…}).你可以看到为什么它像方法或Test :: Class :: Sugar这样的东西很好.我的观点是数组名称之后不是perl解析器正在寻找一个sub的名称;这是一个解析器正在寻找一个操作符的地方,所以@arr这样做会给你一个谜语,在Devel :: Declare有机会干预之前,操作者预期的错误会被发现. 这两个可能可以通过改变事情来克服,以便您的关键字首先出现在线上,但现在您已经有关键字somestuff {…},其中数组的名称是somestuff,而且您完全符合大多数其他模块已经被雕刻出来了 – 只有当你生成for循环时,你可能会将块作为一个真正的块而不是将其作为子定义来解析. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |