У меня есть две функции, которые создают объекты R S3. Один объект инкапсулирует другой. Когда пользователь передает неверный аргумент num
в fun2()
, он выбрасывает утверждение об ошибке в fun2()
. Я думаю, что для пользователя было бы более информативным увидеть сообщение в fun1()
. Какие есть варианты для сохранения сообщения, выданного в fun1()
, и поднятия его вместо сообщения в fun2()
?
fun1 <- function(num) {
assert_that(num %% 2 == 0, msg = "num should be even")
structure(num,
class = "fun1-Class"
)
}
fun2 <- function(text, num) {
assert_that(class(num) == "fun1-Class", msg = "Bad Class")
structure(list(text, num),
class = "fun2-Class"
)
}
fun1(1.2)
# Throws error "num should be even"
x <- fun2("myText", fun1(1.2))
# Throws error "Bad Class"
Трассировка ниже
Error: Bad Class
3.
stop(assertError(attr(res, "msg")))
2.
assert_that(class(num) == "fun1-Class", msg = "Bad Class")
1.
fun2("text", fun1(1.2))