Способ Scala выполнить проверку apache commons lang3?

#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. Этот пример — просто пример проверки пользовательского ввода.