ruby - 空字符串为nil以避免变量缓存

时间:2011-05-06 09:17:40

标签: ruby

"".chomp返回"",如果哪个不知道,系统命令将返回空字符串。换句话说,下面的代码将缓存“”而不再检查系统。

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

我想

  • 保持变量缓存,如果找到则不再运行系统命令。
  • 避免在代码中运行两次系统命令以检查.empty?

如果chomp在空字符串上返回 nil,则不会有问题。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

创建一个缓存行调用的方法,在那里检查一个空字符串,如果是,则返回nil,否则返回输出。

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

@wkhtmltoimage ||= wkhtml_to_image_command

答案 1 :(得分:0)

作为方法缓存的替代方案,这是一种更紧凑的单线程。

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

不能像缓存方法返回那样可读,我必须承认。