Приятно, что значения по умолчанию можно увидеть в заголовке функции a, таким образом, автоматически в документации функции. Однако, когда функция match.arg
используется в теле функции, отображаемый вектор по умолчанию фактически состоит из значения по умолчанию и необязательных вариантов выбора. В любом случае, match.arg
ограничен типом персонажа. Как правило, проверку ввода необходимо выполнять другим способом, например, с помощью пакета checkmate.
Было бы неплохо, если бы требования аргументов, проверяемые в теле функции, отображались в заголовке функции. Тогда было бы проще создать интерфейс для функции из другого языка программирования или среды. Документация тоже становится проще.
Чтобы объяснить, что я имею в виду. Вот первые строки примера функции:
Fun <- function(fruit = Character("apple", c("banana", "orange")),
language = Characters(c("r", "c++")),
years = Integers(2018:2020, min = 1970, max = 2020),
value = Numeric(3, min = 0)) {
fruit <- MatchArg(fruit)
language <- MatchArg(language)
years <- MatchArg(years)
value <- MatchArg(value)
Значение заголовка этой функции:
fruit
: символ с "apple"
по умолчанию и "banana"
и "orange"
в качестве необязательных вариантов. language
: вектор символов с c("r", "c++")
по умолчанию. Других требований нет. years
: целочисленный вектор с 2018:2020
по умолчанию и минимальные / максимальные требования. value
: неотрицательное числовое значение с 3
по умолчанию.
Несколько лет go я запрограммировал предварительные версии вышеуказанного функционала. Однако в то время мы выбрали другое решение.
Может быть, у других были похожие идеи? Что-то подобное уже доступно в r?