在Ruby中处理空数组为nil

时间:2014-09-30 04:57:00

标签: ruby arrays

空数组([])被处理为" true"在布尔上下文中。是否有任何智能方法将空数组处理为false?

我想制作一个简单的代码,列出当前目录中的C文件,或者#34; Main.c"如果目录中没有C文件。我可以写下面的内容,但是有更聪明的方法吗?

Dir.glob("*.c")!=[] ? Dir.glob("*.c").join(" ") : "Main.c"

2 个答案:

答案 0 :(得分:2)

我会这样写,避免重复多次调用Dir.glob并使用Array#empty?的代码:

files = Dir.glob("*.c")
files.empty? ? 'Main.c' : files.join(' ')

实际上,这似乎更加一致:

files = Dir.glob("*.c")
files = ['Main.c'] if files.empty?
files.join(' ')

答案 1 :(得分:-1)

如果您可以假设结果列表中有/应该始终是“Main.c”,请将其推入然后单击列表以消除重复项(如果有)。

[*Dir.glob("*.c"), "Main.c"].uniq.join(" ")