Выборка из массива или функция по умолчанию - PullRequest
2 голосов
/ 02 апреля 2012

Мне нужна следующая логика.Если массив содержит value, верните его, иначе верните некоторое значение по умолчанию.До сих пор я обнаружил, что этого можно добиться с помощью delete:

array.delete(value) || default_value

Но, очевидно, это модифицирует массив.Есть ли такая функция, как fetch со значением по умолчанию, которая принимает элемент вместо индекса?

PS.Я знаю, что это можно переписать как array.include?(value) ? value : default_value, вопрос только ради более чистого кода.

1 Ответ

4 голосов
/ 02 апреля 2012

Обновление: Есть один способ, который я могу придумать, но это труднее читать, чем троичное:

 (array & [value]).first || default_value

Вы можете сделать это в Array, если вытак склонен:

class Array
  def fetch_value(value, default)
    (self & [value]).first || default
  end
end

a = *1..3
a.fetch_value(4, "foo")
#=> "foo"

Старый ответ, прежде чем я понял, что вы хотите использовать значение для поиска, а не индекс:

Array # fetch принимает необязательный второй аргумент:

array.fetch(index, default)

Вот пример:

a = *1..3
a.fetch(4, "foo")
#=> "foo"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...