Ruby - 如何向哈希添加条件键?

use*_*621 2 ruby key-value

我有这个方法创建一个哈希:

def build_values(data)
  {
    key1: data.k1,
    key2: data.k2,
    key3: (@var == true ? data.k3 : nil),
    key4: data.k4,
    ...
  }
end
Run Code Online (Sandbox Code Playgroud)

如果的话@var == true,那么就key3有价值data.k2。那挺好的。

如果不是true,则key3没有价值(实际上,它有nil)。key3但理想情况下,我根本不想打印。

我怎么做?像这样的东西是行不通的:

def build_values(data)
  {
    key1: data.k1,
    key2: data.k2,
    if @var == true
      key3: data.k3
    end,
    key4: data.k4,
    ...
  }
end
Run Code Online (Sandbox Code Playgroud)

Ste*_*fan 6

不是最漂亮的解决方案,但**可以使用:

{
  key1: data.k1,
  key2: data.k2,
  **(@var == true ? { key3: data.k3 } : {}),
  key4: data.k4,
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果您只关心是否为true ,== true则可以省略。@var