代码之家  ›  专栏  ›  技术社区  ›  Shpigford

如何在Ruby中用一行if语句设置变量?

  •  1
  • Shpigford  · 技术社区  · 15 年前

    对于Ruby,如何根据条件设置变量?类似:

    dog_name = params[:dog][:name] if params[:dog]
    

    如果不设置参数[:dog],则不会设置dog_name。

    现在,如果参数[:dog]为零,我将得到一个错误。

    5 回复  |  直到 12 年前
        1
  •  7
  •   Paige Ruten    15 年前

    你可以用 && 操作员:

    dog_name = params[:dog] && params[:dog][:name]
    

    所以现在 dog_name nil 如果 params[:dog] 不存在,否则它将是 params[:dog][:name] .

        2
  •  3
  •   Luke Francl    15 年前

    你所做的应该有效。

    我想 params[:dog] 实际上不是零。我打赌它是一个空字符串(或空哈希)。(您可以通过输出参数[:dog]来检查这一点。请检查日志或stdout。)

    Rails有一个方法 blank? 测试nil、空字符串和空集合。

    尝试:

    dog_name = params[:dog][:name] if !params[:dog].blank?
    

    或:

    dog_name = params[:dog][:name] unless params[:dog].blank?
    
        3
  •  1
  •   marocchino    15 年前

    您还可以使用&=运算符:

    dog_name = params.has_key(:dog)
    dog_name &&= params[:dog].has_key(:name)
    dog_name &&= params[:dog][:name]
    
        4
  •  0
  •   ChrisInEdmonton    15 年前

    怎么样:

    dog_name = params[:dog][:name] if params.has_key?(:dog) && params[:dog].has_key(:name)
    

    当参数[:dog]为零时,您会得到什么错误?

        5
  •  0
  •   KatieK    12 年前

    你试试这个怎么样:

    dog_name = params[:dog][:name] unless params[:dog].nil?