对于`map`,有没有类似`last`的东西?

ben*_*uth 13 perl

在Perl中,是否可以任意结束map执行,例如last在循环中等效的东西?

它有点像这样:

map {
    if (test == true) { last; } dosomething
} @myarray
Run Code Online (Sandbox Code Playgroud)

Zai*_*aid 19

不.你不能last,next等等map,grepsort阻止因为它们不是循环.

话虽如此,问题中的代码片段是不好的做法,因为map永远不应该在void上下文中调用.它们应该用于将一个列表转换为另一个列表.

如果你真的必须内联它(在ysth的评论之后修改),这是一个更好的编写方式:

 $_ == 10 && last, print for 1..15;  # prints '123456789'
Run Code Online (Sandbox Code Playgroud)

  • @benzebuth:我不是在谈论`do_something`.你应该真的使用`map`来返回一个列表. (6认同)