perl - 在 Perl 的推送中使用条件运算符

标签 perl conditional-operator

我是 Perl 开发的新手,我想检查是否允许在推送语句中使用条件运算符。 像这样

push(@myMap, {
    key1 => value1,
    key2 => value2,
    (condition)?{
        key3 => value3,
    }:(),
    key4 => value4
});

基本上我只想根据条件向 Map 添加一个值

最佳答案

是的,但是你的代码是错误的。

push(@myMap, {
    key1 => value1,
    key2 => value2,

    (condition) ? 
      {                   ### these brackets are wrong
        key3 => value3,
      }                   ###
   :(),

    key4 => value4
});

如果条件为真,则您正在创建一个包含奇数个元素的数据结构。它将包含单个哈希引用作为值之一,因此您不再有键/值对,它可能会提示。

它会尝试做你想做的事,基本上是将哈希引用转换成它的字符串表示,然后使用 key4 作为值,给你留下 value4undef 作为最后一对。

修复:

push(@myMap, {
    key1 => value1,
    key2 => value2,
    (condition) ? ( key3 => value3 ) : (),
    key4 => value4
});

关于perl - 在 Perl 的推送中使用条件运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67903415/

相关文章:

PHP 嵌套条件运算符错误?

java - 问号 "?"和冒号 ":"运算符用于什么?

perl - perl 中的 srand 函数没有给出正确的值范围

java - 检查 int 是否在两个数字之间

c++ - 如何重载条件运算符?

java - 这是一个java boolean 值可以为空的场景吗?为什么这段代码会编译?

perl - 如果 AUTOLOAD 失败,则传递错误消息

perl - 如何解码 utf 8 中的实体

perl - cpan 错误 : Unable to get Terminal Size. Win32 GetConsoleScreenBufferInfo 调用不起作用

perl - 如何获取被调用的别名子程序的名称?