rig*_*old 4 perl higher-order-functions
为什么以下有效?
my @ys = map { $_ * $_ } @xs;
Run Code Online (Sandbox Code Playgroud)
而以下无效?
my @ys = map { $_ * $_ }, @xs;
Run Code Online (Sandbox Code Playgroud)
是map语言结构而不是真正的函数,还是有特殊的块规则?
是的,map是一种语言结构.
就像grep,它支持两种不同的语法:
map BLOCK LIST
map EXPR, LIST
Run Code Online (Sandbox Code Playgroud)
该BLOCK在你的例子只是一个简单的表达,所以这两个语句是等价的:
my @ys = map { $_ * $_ } @xs;
my @ys = map $_ * $_, @xs;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
408 次 |
| 最近记录: |