不需要将 `!!!` 运算符导入到包 DESCRIPTION 中?
No need to import `!!!` operators into the package DESCRIPTION?
我正在尝试使用 dplyr
构建一个包。我大量使用了 rlang
中的 !!
和 !!!
运算符。
然而,我没有import
明确地使用它们,尽管这个包似乎仍然有效。
我是不是遗漏了环境中的某些东西,或者 import(dplyr)
是否以某种方式弥补了这一点?
正如上面的评论所述,dplyr
从 rlang
重新导出 tidyeval 依赖项,因此如果您在导入中有 dplyr
,则不需要显式导入 [=11] =].但是,可能值得一问您是需要所有 dplyr
,还是只需要 tidyeval 部分 - 将依赖性保持在最低限度是有道理的。 rlang
是一个非常轻量级的依赖包,所以如果你可以直接依赖它,它可以让你的包更快地安装并且(理论上)不太可能因外部更新而中断。
如果您发现自己在包开发中使用了大量的引用和取消引用运算符,您也可以查看 usethis package's "tidyverse development helpers"。 usethis::use_tidy_eval()
"imports a standard set of helpers to facilitate programming with the tidy eval toolkit." 这是将 rlang
添加到 Imports 和 imports/re-exports 并记录 (en)quo(s)
、(en)sym(s)
、[=20 的一种快速简便的方法=]、函数、.data
代词和 :=
。那么你应该拥有在整个包中使用 tidyeval 所需的东西。
我正在尝试使用 dplyr
构建一个包。我大量使用了 rlang
中的 !!
和 !!!
运算符。
然而,我没有import
明确地使用它们,尽管这个包似乎仍然有效。
我是不是遗漏了环境中的某些东西,或者 import(dplyr)
是否以某种方式弥补了这一点?
正如上面的评论所述,dplyr
从 rlang
重新导出 tidyeval 依赖项,因此如果您在导入中有 dplyr
,则不需要显式导入 [=11] =].但是,可能值得一问您是需要所有 dplyr
,还是只需要 tidyeval 部分 - 将依赖性保持在最低限度是有道理的。 rlang
是一个非常轻量级的依赖包,所以如果你可以直接依赖它,它可以让你的包更快地安装并且(理论上)不太可能因外部更新而中断。
如果您发现自己在包开发中使用了大量的引用和取消引用运算符,您也可以查看 usethis package's "tidyverse development helpers"。 usethis::use_tidy_eval()
"imports a standard set of helpers to facilitate programming with the tidy eval toolkit." 这是将 rlang
添加到 Imports 和 imports/re-exports 并记录 (en)quo(s)
、(en)sym(s)
、[=20 的一种快速简便的方法=]、函数、.data
代词和 :=
。那么你应该拥有在整个包中使用 tidyeval 所需的东西。