将符号分配给变量结果为零
Assigning symbol to variable result in nil
我试图将一个符号分配给一个变量并将其传递给一个函数,但它似乎没有分配,我得到的是 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
但我本以为它会将符号分配给变量?
由于运算符的优先级,您需要修复括号(例如,三元运算符 ?
在 has_key?
之前计算)。试试这个:
branch_name = @payload.has_key?('branch_name') ? @payload['branch_name'].to_sym : false;
可以使用以下示例片段重现该行为:
a = { 2 => 2 }
=> {2=>2}
a.has_key? 1 ? 2 : 3 # 1 evalutes to true, which reduces into a.has_key?(2)
=> true
我试图将一个符号分配给一个变量并将其传递给一个函数,但它似乎没有分配,我得到的是 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
但我本以为它会将符号分配给变量?
由于运算符的优先级,您需要修复括号(例如,三元运算符 ?
在 has_key?
之前计算)。试试这个:
branch_name = @payload.has_key?('branch_name') ? @payload['branch_name'].to_sym : false;
可以使用以下示例片段重现该行为:
a = { 2 => 2 }
=> {2=>2}
a.has_key? 1 ? 2 : 3 # 1 evalutes to true, which reduces into a.has_key?(2)
=> true