有沒有辦法做一個文件測試的情況下聲明,我想是這樣的:文件測試
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