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

ruby中一种优雅的赋值方式

  •  0
  • nas  · 技术社区  · 16 年前

    有没有一种更优雅的方式在Ruby中实现以下逻辑?

    a = nil  #=> obviously 'a' can have value but I am just setting it to nil to make this example clearer
    b = a
    unless b
      b = "value"
    end
    

    因此,我们拥有 b 最后设定。我们可以使用上述代码的另一种变体,如下所示:

    a = nil
    b = a
    b ||= "value"
    

    b = a ? a : "value"
    

    但是,如果替换变量 a 还有这个表达 "value"

    是否可以通过某种方式使其更加优雅和富有表现力,或者我们仅限于上述解决方案?

    3 回复  |  直到 6 年前
        1
  •  10
  •   ib. Evgeny Shavlyugin    6 年前

    你几乎自己回答了你的问题。 即两种说法

    b = a
    b ||= "value"
    

    可组合为一个:

    b = a || "value"
    
        2
  •  3
  •   ib. Evgeny Shavlyugin    6 年前

    b ||= "value" 这句话很像广受欢迎的帕尔斯 // 和 //= nil 和 false . 这使得其功能与Perls相同 操作人员

    a ||= b

        3
  •  1
  •   ib. Evgeny Shavlyugin    6 年前

    我不喜欢用这个词 || 因为法雷尔在ib.s的回答中指出的原因,运营商。它可能就在这里,但我总是害怕有一天它会绊倒我。因此,我倾向于选择比较平庸的人:

    b = "value"
    b = a unless a == nil
    

    不漂亮,我知道,但是安全而且非常明确。

    推荐文章