Многострочный троичный оператор - больше не действует. - PullRequest
0 голосов
/ 04 октября 2018

У меня есть фрагмент кода, который использует класс Ruby Date для вывода данных в рамках определенных параметров даты.На данный момент у меня есть троичный оператор, который говорит, что если текущий месяц больше или равен сентябрю, то выведите 500_000, а для любых других месяцев выведите 400_000.

Допустим, я хочу теперь вывести 800_000, если текущий месяц октябрь или больше, но оставить сентябрь на 500_000 и все на 400_00.

Полагаю, мне придется покончить с троичным оператором и построить длинный блок, если еще?Есть ли способ сделать это, не делая мой код слишком длинным?

september = '01-09-2018'.to_date
october = '01-10-2018'.to_date
    monthly_target_current = start_date_current_week.to_date >= september ? 500_000 : 400_000
    monthly_target_prev_1 = start_date_last_week.to_date >= september ? 500_000 : 400_000
    monthly_target_prev_2 = start_date_week_last_2_weeks.to_date >= september ? 500_000 : 400_000

1 Ответ

0 голосов
/ 04 октября 2018

У вас может быть метод, который принимает первое значение, а затем использует переключатель или блок if / else для возврата правильного значения.Операторы в Ruby могут сравниваться с диапазонами, поэтому вы можете добавлять месяцы по мере необходимости.

См. Этот ответ для подхода https://stackoverflow.com/a/22700292/771564

Что-то вроде этого возможно?

def default_date_value(date)
    september = '01-09-2018'.to_date
    october = '01-10-2018'.to_date

    if date >= october
        800_000
    elsif date >= september
        500_000
    else
        400_000
    end
end

monthly_target_current = default_date_value(start_date_current_week)
monthly_target_prev_1  = default_date_value(start_date_last_week)
monthly_target_prev_2  = default_date_value(start_date_week_last_2_weeks)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...