除了obj ['blah']之外,更多惯用红宝石写@var = obj ['blah']的方式.nil?

rob*_*ntw 5 ruby idioms

我确信有一个更惯用的ruby方式来编写下面的代码:

@var = obj['blah'] unless obj['blah'].nil?
Run Code Online (Sandbox Code Playgroud)

我已经完成了这些工作(见下文),并且必须有一个更好的方法!

@num_x = obj['num_x'] unless obj['num_x'].nil?
@num_y = obj['num_y'] unless obj['num_y'].nil?
@num_iterations = obj['num_iterations'] unless obj['num_iterations'].nil?
@pe = obj['pe'] unless obj['pe'].nil?
Run Code Online (Sandbox Code Playgroud)

我觉得||=操作员可能很有用,但似乎无法解决如何使用它.

Pet*_*ter 2

对于这个共同的需求,我能想到的最短的是

@var = obj['blah'] or @var
Run Code Online (Sandbox Code Playgroud)

但如果obj['blah']可以的话false,您需要使用原始版本。

操作||=员测试左侧,而不是右侧,因此不适用于此处。