#java #scala
#java #scala
Вопрос:
Каков способ Scala для выполнения того же, что и проверка apache commons lang3? т.Е. Проверка, направленная на проверку пользовательского ввода, в отличие от ошибок кодирования с помощью утверждений, где невыполнение условия приведет к исключению IllegalArgumentException, например
/**
* Returns the newly created file only if the user entered a valid path.
* @param path input path where to store the new file
* @param fileName name of the file to be created in directory path
* @throws IllegalArgumentException when the input path doesn't exist.
*/
public File createFile(File path, String fileName) {
// make sure that the path exists before creating the file
// TODO: is there a way to do this in Scala without the need for 3rd party libraries
org.apache.commons.lang3.Validate.isTrue(path.exists(), "Illegal input path '" path.getAbsolutePath() "', it doesn't exist")
// now it is safe to create the file ...
File result = new File(path, fileName)
// ...
return resu<
}
Комментарии:
1. Это
org.apache.commons.lang3.Validate(path.exists(), "Illegal input path '" path.getAbsolutePath() "', it doesn't exist")
вообще допустимо? Какой метод вы вызываете? В любом случае, вопрос неясен. Вы пытаетесь вызвать commons-validate? Или вы пытаетесь написать свою собственную аналогичную функцию проверки в Scala?2. Просмотр документов, которые вы связали с конструктором
Validate
, описывается как «Этот класс обычно не должен создаваться» … и он не принимает никаких параметров. Итак, @vptheron правильно запрашивает разъяснения о том, какой метод вы вызываете, поскольку то, что у вас есть, не похоже на метод вorg.apache.commons.lang3.Validate
классе, с которым вы связаны.3. Извините, действительно, моя вина теперь обновлена. Я слишком привык к применению Scala
4. Я не хочу использовать стороннюю библиотеку в данном случае apache commons lang, когда есть хороший способ сделать то же самое в Scala.
Ответ №1:
По совпадению я только что узнал, что require
это будет метод выбора в Scala, например
/**
* Returns the newly created file only if the user entered a valid path.
* @param path input path where to store the new file
* @param fileName name of the file to be created in directory path
* @throws IllegalArgumentException when the input path doesn't exist.
*/
def createFile(path: File, fileName: String) : File = {
require(path.exists, s"""Illegal input path "${path.getAbsolutePath()}", it doesn't exist""")
// now it is safe to create the file ...
val result = new File(path, fileName)
// ...
result
}
Комментарии:
1. Это OT, я не спрашивал в своем OP, является ли создание исключения ужасной идеей или нет, я спросил, какова будет замена Apache commons Validate в Scala. Этот пример — просто пример проверки пользовательского ввода.