在Haskell(和其他各种功能编程语言)中,pattern matching可用于分配列表的特定元素,而丢弃其他元素:
Prelude> let [x, _, z] = "abc"
Prelude> x
'a'
Prelude> [z, x]
"ca"
请注意,“
_
”不是变量,并且没有分配任何东西:Prelude> _
<interactive>:5:1: Pattern syntax in expression context: _
对于用Perl编写的Irssi脚本,我想做类似的事情,并丢弃“
@_
”的第二个元素(即,不将其分配给任何东西):my ($message, _, $windowItem) = @_;
这将失败,并显示以下错误消息:“
Can't declare constant item in "my" at [...]overlength_filter.pl line 17, near ") ="
”那么,该下划线通配符的Perl等价于什么?
最佳答案
只需将其分配给undef
即可。my ($message, undef, $windowItem) = @_;
关于perl - 如何跳过类似于Haskell模式匹配的Perl列表分配中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27995584/