有没有办法做一个文件测试的情况下声明,我想是这样的:文件测试
case ARGV[0]
when File.exist?
puts "File exists!"
when ""
puts "No argument"
end
这似乎并没有工作,虽然。
有没有办法做一个文件测试的情况下声明,我想是这样的:文件测试
case ARGV[0]
when File.exist?
puts "File exists!"
when ""
puts "No argument"
end
这似乎并没有工作,虽然。
这里是什么样的呢case
细分:
case ARGV[0]
when File.exist?(ARGV[0]) # Note proper syntax for File.exist?
puts "File exists!" # Do this if value of ARGV[0] == result of File.exist?
when ""
puts "No argument" # Do this if value of ARGV[0] == ""
end
显然,如果ARGV[0]
不为空,这将无法正常工作。此外,无论ARGV[0]
的值如何,它仍将执行File.exist?(ARGV[0])
,因此它不会按照您的意图执行。
我假设你想检查是否知道参数后的文件存在不为零或空白:
if ARGV[0] and not ARGV[0].empty?
puts "File exists!" if File.exist?(ARGV[0])
else
puts "No argument"
end
如果ARGV[0]
有一个值,但文件不存在,你还有没有输出。我不知道这是否是基于你的问题的意图,因为你没有表达预期的行为。
你也可以做这样的事情:
case ARGV[0]
when "", nil
puts "No argument"
else
puts "File exists!" if File.exist?(ARGV[0])
end
如果它是一个布尔我看不出有任何理由要使用'case'语句,理由不至少一个。 'case'语句意味着从一个任意长的选项列表中选择,这里不存在。 – 2014-09-11 13:17:44