1} @array 创建一个哈希映射数组的元素到 1?块如何返回两个元素的列表?我认为块返回它的-6ren">
gpt4 book ai didi

perl - "map"如何解释它在 Perl 中的第一个参数?

转载 作者:行者123 更新时间:2023-12-04 16:57:18 25 4
gpt4 key购买 nike

我对 Perl 的“ map ”功能有一些疑问。

具体来说:

  • 如何

    %hash = 映射 {$_ => 1} @array

    创建一个哈希映射数组的元素到 1?块如何返回两个元素的列表?我认为块返回它的最后一个值。 => 是否隐式创建了一个列表,而不是返回其正确参数的“,”?
  • 为什么

    %hash = map ($_ => 1), @array

    不行?我试图在这里返回一个包含两个元素的列表......从解析器的角度来看,在“(”之前添加“+”如何修复它?
  • 最佳答案

    问题 1: map 块是运行列表上下文,因此允许返回零、一个或多个值。 map全部返回。 “, ”或“=> ”在标量上下文中返回它们的右侧,但在列表上下文中返回它们的两侧。见 perlop详情。

    问题2:%hash = map ($_ => 1), @array被解释为 %hash = (map($_, 1), @array) .换句话说,它返回 (1, @array)。
    %hash = map +($_ => 1), @array , + 表示 () 不引用参数列表,因此它被解释为 map(+($_ => 1), @array);

    当天的教训:始终在您的 map 表达周围使用赞誉,这样您就不会被此类问题所困扰。

    关于perl - "map"如何解释它在 Perl 中的第一个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/439927/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com