【发布时间】:2011-12-03 01:11:15
【问题描述】:
只是好奇,我玩过原型设计,但似乎子程序的原型& 只允许在第一个位置。
当我写作时
sub test (&$$) {
do_something;
}
并将其称为
test {doing_something_else} 1,2;
它有效。
当我做这样的原型时
sub test ($$&) {
do_something;
}
然后再次将其称为
test 1,2 {doing_something_else};
它不起作用。我尝试了各种排列,但似乎没有任何效果。
我错过了什么,还是不可能?如果不是,为什么?
(我可能需要说明,我成功尝试了调用 test(1, 2, sub{foo}) 的选项,当然,但它看起来不像上面最后一个示例中的选项那么性感(为此我什至不需要原型);我希望能够实现结构的语法,如 if () {} else {} 等,或者更重要的是,try () catch () {} 或 switch () case (){},但我想这就是为什么这些结构还没有在 Perl 中实现的原因)
【问题讨论】:
-
“它不起作用”是not a good problem description
-
造成这种情况的原因通常是解析不明确:perl 无法判断您是要调用
test $this, $that { BLOCK }还是test $this, $that{HASHELEM}。 -
@TLP:同意,还在赶上这里的语法;-)