perl中如何封装带变参的函数
时间:2010-10-08
来源:互联网
比如要封装syslog,它的定义是:
syslog($priority, $format, @args)
那在封装时,该怎么收集参数传给它呢:
#本意想这样:mylog($flag, $priority, $format, @args);
sub mylog() {
syslog($_[1], $_[2], $_[3]) if $_[0]; #好像这里这样写不行
}
syslog($priority, $format, @args)
那在封装时,该怎么收集参数传给它呢:
#本意想这样:mylog($flag, $priority, $format, @args);
sub mylog() {
syslog($_[1], $_[2], $_[3]) if $_[0]; #好像这里这样写不行
}
作者: maxxfire 发布时间: 2010-10-08
本帖最后由 珞水的大叔 于 2010-10-08 12:26 编辑
当然不行啊,因为$_[3]不能代表数组@args,$_[3]只是数组@args的第一个元素啊
这样试试
复制代码
当然不行啊,因为$_[3]不能代表数组@args,$_[3]只是数组@args的第一个元素啊
这样试试
- sub mylog() {
- syslog(@_) if shift;
- }
作者: 珞水的大叔 发布时间: 2010-10-08
这么说perl中的函数原型没什么意思了,比如我一个函数的原型是这样:
sub func($$@$) {...}
估计是实现不了。。
数组只能改成引用吧:
sub func($$\@$) {...}
sub func($$@$) {...}
估计是实现不了。。
数组只能改成引用吧:
sub func($$\@$) {...}
作者: maxxfire 发布时间: 2010-10-08
回复 maxxfire
貌似确实是这样……
貌似确实是这样……
作者: 珞水的大叔 发布时间: 2010-10-08
13.函数原型
Perl中的函数原型是调用环境中的自动模板,而不像C中的那样。而且函数原型只影响那些不带&方式调用的函数。你必须十分注意函数原型是否将你的子函数带入了一个新的环境。因此,“最好在新函数中使用函数原型,但别在旧函数中使用函数原型。”如果你不小心,你可能因函数原型遇到很多麻烦。但如果你非常谨慎,你可以用函数原型出色地完成任务。
见 http://wangcong.org/articles/c2perl.html
Perl中的函数原型是调用环境中的自动模板,而不像C中的那样。而且函数原型只影响那些不带&方式调用的函数。你必须十分注意函数原型是否将你的子函数带入了一个新的环境。因此,“最好在新函数中使用函数原型,但别在旧函数中使用函数原型。”如果你不小心,你可能因函数原型遇到很多麻烦。但如果你非常谨慎,你可以用函数原型出色地完成任务。
见 http://wangcong.org/articles/c2perl.html
作者: longbow0 发布时间: 2010-10-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28