【问题标题】:Assigning symbol to variable result in nil将符号分配给变量结果为零
【发布时间】:2015-02-18 13:00:56
【问题描述】:

我正在尝试将符号分配给变量并将其传递给函数,但它似乎没有分配,我得到的是nil

  logger.info @payload['branch_name']
  logger.info @payload['branch_name'].to_sym
  branch_name = @payload.has_key? 'branch_name' ? @payload['branch_name'].to_sym : false;
  logger.info branch_name

结果:

[2015-02-18T12:53:01.237082 #6]  INFO -- : develop
[2015-02-18T12:53:01.237154 #6]  INFO -- : :develop
[2015-02-18T12:53:01.237234 #6]  INFO -- : nil

但我希望它将符号分配给变量?

【问题讨论】:

    标签: ruby symbols


    【解决方案1】:

    由于运算符优先级,您需要修正括号(例如,三元运算符 ?has_key? 之前计算)。试试这个:

    branch_name = @payload.has_key?('branch_name') ? @payload['branch_name'].to_sym : false;
    

    可以使用以下示例 sn-p 重现该行为:

    a = { 2 => 2 }
    => {2=>2}
    a.has_key?­ 1 ? 2 : 3 # 1 evalutes to true, which reduces into a.has_key?(2)
    => true
    

    【讨论】:

    • 完全出现在@matt!非常感谢!
    猜你喜欢
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2020-12-01
    相关资源
    最近更新 更多