Есть ли способ, чтобы сделать тест файл в случае заявления, я хочу что-то вроде:тест файла внутри сазе рубин
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]
не является пустым. Кроме того, он все равно будет выполнять File.exist?(ARGV[0])
независимо от значения 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' подразумевают выбор из произвольно длинного списка опций, которых здесь нет. –