内容简介:http://stackoverflow.com/questions/25171619/how-can-i-inject-multiple-lines-with-develdeclare
Devel::Declare
来注入多行 Perl 代码.但是,Devel :: Declare :: set_linestr()不能处理多行.
通常我会把多个语句一起加入一行.这些语句必须是单独的行,以保留其行号用于错误报告.这是为了解决 this bug in Method::Signatures 和 this related bug .我打开了替代解决方案.
例如,Method :: Signatures当前会转换此代码…
use Method::Signatures;
func hello(
$who = "World",
$greeting = get_greeting($who)
) {
die "$greeting, $who";
}
…进入…
func \&hello; sub hello { BEGIN { Method::Signatures->inject_scope('') }; my $who = (@_ > 0) ? ($_[0]) : ( get_greeting($who)); my $greeting = (@_ > 1) ? ($_[1]) : ( "Hello"); Method::Signatures->too_many_args_error(2) if @_ > 2;
die "$greeting, $who";
}
然后,$谁报告第4行而不是第7行.
我想要这样做(或者也可能涉及#line).
func \&hello; sub hello { BEGIN { Method::Signatures->inject_scope('') };
my $who = (@_ > 0) ? ($_[0]) : ( "World");
my $greeting = (@_ > 1) ? ($_[1]) : ( get_greeting($who));
Method::Signatures->too_many_args_error(2) if @_ > 2;
die "$greeting, $who";
}
这不仅忠实地重现线数,应该get_greeting croak它会从正确的行被调用.
根据您自己的答案,以下作品:
sub __empty() { '' }
sub parse_proto {
my $self = shift;
return q[print __LINE__."\n"; Foo::__empty(
);print __LINE__."\n"; Foo::__empty(
);print __LINE__."\n";];
}
但是引入不可接受的开销,因为必须为每个参数调用__empty()函数.可以通过调用__empty()有条件地使用永远不会评估为true的条件来消除开销.
sub __empty() { '' }
sub parse_proto {
my $self = shift;
return q[print __LINE__."\n"; 0 and Foo::__empty(
);print __LINE__."\n"; 0 and Foo::__empty(
);print __LINE__."\n";];
}
http://stackoverflow.com/questions/25171619/how-can-i-inject-multiple-lines-with-develdeclare
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- HttpCanary使用指南——静态注入器
- HttpCanary使用指南——正则匹配注入
- 「译」Golang 使用高阶函数实现依赖注入
- 如何使用基于整数的手动SQL注入技术
- spring的Bean注入和P标签使用
- Angular 4 依赖注入教程之七 ValueProvider的使用
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python高性能(第2版)
[加] 加布丽埃勒•拉纳诺(Gabriele Lanaro) / 袁国忠 / 人民邮电出版社 / 2018-8 / 59.00元
本书是一本Python性能提升指南,展示了如何利用Python的原生库以及丰富的第三方库来构建健壮的应用程序。书中阐释了如何利用各种剖析器来找出Python应用程序的性能瓶颈,并应用正确的算法和高效的数据结构来解决它们;介绍了如何有效地利用NumPy、Pandas和Cython高性能地执行数值计算;解释了异步编程的相关概念,以及如何利用响应式编程实现响应式应用程序;概述了并行编程的概念,并论述了如......一起来看看 《Python高性能(第2版)》 这本书的介绍吧!