Упростить назначение в Ruby на Rails - PullRequest
2 голосов
/ 05 марта 2020

Я просто хочу присвоить значение переменной B переменной A, только если B не nil. И я хочу максимально упростить код. Поэтому я нашел один.

A = B if B

Но имя переменной длинное, например data[:Symbol1][:Symbol2]..., в любом случае дублируется одно и то же имя переменной.

Кто-нибудь может мне помочь с упрощением этого кода?

Ответы [ 3 ]

1 голос
/ 06 марта 2020

Я бы сказал, что вам нужно A = B || A.

Оператор || оценивает и возвращает первый не ложный операнд. Если B " truey ", он вернет B (и присвоит его A). Если B ложно, A будет назначен сам.

1 голос
/ 05 марта 2020

Вы можете попробовать метод presence.

Ваш код будет выглядеть как

A = B.presence

Пример его в действии:

[1] pry(main)> b = nil
=> nil
[2] pry(main)> a = b.presence
=> nil
[3] pry(main)> a
=> nil
[4] pry(main)> b = 'foo'
=> "foo"
[5] pry(main)> a = b.presence
=> "foo"
[6] pry(main)> a
=> "foo"
0 голосов
/ 06 марта 2020

2 простых способа:

a = b.presence || a

Или

a = b || a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...