ruby - пустая строка как nil, чтобы избежать кэширования переменных - PullRequest
0 голосов
/ 06 мая 2011

"".chomp возвращает "", а системная команда возвращает пустую строку, если , который не знает этого. Другими словами, приведенный ниже код будет кэшировать "" и не проверять систему снова.

@wkhtmltoimage ||= `which wkhtmltoimage-proxy`.chomp

Я бы хотел

  • сохранить кэширование переменных, не запускать системную команду снова, если она найдена.
  • не выполняйте системную команду дважды в коде, чтобы проверить .empty?

если chomp вернул ноль в пустой строке , это не будет проблемой. Есть предложения?

Ответы [ 2 ]

3 голосов
/ 06 мая 2011

Создайте метод, который вызывает ваша строка кэширования, проверьте там пустую строку и верните nil, если он есть, иначе верните вывод.

def wkhtml_to_image_command
  output = `which wkhtmltoimage-proxy`.chomp
  output.empty? ? nil : output
end

@wkhtmltoimage ||= wkhtml_to_image_command
0 голосов
/ 08 мая 2011

в качестве альтернативы кешированию метода, это более компактный однострочный.

@wkhtmltoimage ||= (c=`which wkhtmltoimage-proxy`.chomp).empty? ? nil : c

Не так читабельно, как кэширование возврата метода, я должен признать.

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