Конкатенация Ruby String и троичный не играют хорошо? - PullRequest
7 голосов
/ 13 апреля 2011

В следующем коде ошибки третьей строки с: Ошибка типа: невозможно преобразовать false в строку

line = "some default text"
line << " some more text" unless more.empty?
line << (even_more.empty?) ? " done." : " and even more text"

Как лучше это сделать?

1 Ответ

20 голосов
/ 13 апреля 2011

Эти символы необходимы, потому что << имеет более высокий приоритет, чем ? ( таблица приоритетов ). Решение:

line << (even_more.empty? ? " done." : " and even more text")

Обратите внимание, что при построении массивов вы можете использовать функциональный подход:

line = [
  "some default text",
  ("some more text" unless more.empty?),
  even_more.empty? ? "done." : "and even more text",
].compact.join(" ")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...